home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / UTILITY / INTER29B.ARJ / INTERRUP.F < prev    next >
Text File  |  1992-02-09  |  331KB  |  9,431 lines

  1. Interrupt List, part 6 of 6
  2. This compilation is Copyright (c) 1989,1990,1991,1992 Ralf Brown
  3. ----------60---------------------------------
  4. INT 60 - reserved for user interrupt
  5. ----------60---------------------------------
  6. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  7.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  8.    offset 103h of the handler's segment contains the bytes "ZE"
  9. SeeAlso: INT 32,INT 61"SEMTEX"
  10. ----------60---------------------------------
  11. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  12. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  13. Notes:    these vectors are used by the following Adaptec controllers:
  14.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  15.     these vectors are NOT used by the following Adaptec controllers:
  16.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  17. ----------60---------------------------------
  18. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  19.    supplies a number of subfunctions which perform such functions as drawing
  20.    boxes and menus, and provide input line editing
  21. SeeAlso: INT 61"Atari"
  22. ----------60---------------------------------
  23. INT 60 - HP 95LX System Manager
  24. SeeAlso: INT 61"HP 95LX"
  25. ----------60---------------------------------
  26. INT 60 - PC-IPC API
  27.     STACK:    DWORD    pointer to parameter block (see below)
  28. Return: STACK:    unchanged
  29. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  30.       communication between independent programs
  31.     INT 60 is the default, any interrupt vector may be used by specifying
  32.       the vector on the commandline
  33.  
  34. Format of parameter block:
  35. Offset    Size    Description
  36.  00h    WORD    caller's ID
  37.  02h    WORD    to ID
  38.  04h    WORD    command code (see below)
  39.  06h    WORD    returned status
  40.         bit 0: unused
  41.         bit 1: IPC enabled
  42.         bit 2: IPC installed
  43.         bit 3: error
  44.         bit 4: message(s) available
  45.  08h    WORD    returned error code (see below)
  46.  0Ah    WORD    size of data
  47.  0Ch    DWORD    pointer to data buffer
  48.  
  49. Values of command code:
  50.  01h "IPC_CMND_INQUIRE"     inquire current status
  51.         set status field, writes WORD to data buffer containing free
  52.           message space in bytes, and sets the "size" field to the
  53.           number of messages waiting
  54.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  55.         ignored unless called with the same ID that disabled PC-IPC
  56.  03h "IPC_CMND_DISABLE" disable PC-IPC
  57.  04h "IPC_CMND_INSTALL" reset PC-IPC
  58.  06h "IPC_CMND_RDATA"    read data
  59.         returns first message in data buffer, sets "size" to message
  60.           length and "to ID" field to sender's ID
  61.         if no messages available, bit 4 of status is cleared and "size"
  62.           is set to zero
  63.  07h "IPC_CMND_SDATA"    send data
  64.  08h "IPC_CMND_REQID"    require user ID
  65.         create a new recognized ID and return in "caller's ID" field
  66.  09h "IPC_CMND_DELID"    cancel user ID
  67.         delete caller's ID from pool of recognized IDs
  68.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  69.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  70.         string representing version returned in data buffer, "size"
  71.           field set to length of string
  72.  
  73. Values for error code:
  74.  00h    no error
  75.  01h    invalid command or parameter
  76.  02h    only process 0 can install/reset IPC
  77.  03h    process can not install/reset IPC
  78.  04h    IPC is not enabled
  79.  05h    process can not disable IPC
  80.  06h    invalid destination process ID
  81.  07h    invalid sending process ID
  82.  08h    invalid data destination
  83.  09h    no more process IDs available
  84.  0Ah    can not relinquish that process ID
  85.  0Bh    message space is full
  86.  0Ch    IPC is not installed
  87. ----------60---------------------------------
  88. INT 60 - Tangram Arbiter - API
  89. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  90.     identified by string "@ARB_API" immediately following a short jump at
  91.       the interrupt handler address
  92.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  93.       IBM mainframe
  94. ----------60---------------------------------
  95. INT 60 - INTRSPY/CMDSPY API
  96. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  97.     The installation check is to 
  98.       a) determine that the handler is an IRET instruction
  99.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  100.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  101.       its entry point.
  102.     INTRSPY is a script-driven debugger included with the book
  103.       _Undocumented_DOS_.
  104.  
  105. Call INTRSPY entry point with:
  106.     AH = function
  107.         00h ???
  108.         01h set current directory (for use in reporting)
  109.         ES:DI -> counted string containing directory name (max 79 char)
  110.         02h set name of script file
  111.         ES:DI -> counted string containing file name (max 79 chars)
  112.         03h set script arguments
  113.         ES:DI -> counted string containing arguments (max 79 chars)
  114.         04h get directory set with function 01h
  115.         ES:DI -> 80-byte buffer for directory name
  116.         05h get name of script file
  117.         ES:DI -> 80-byte buffer for script filename
  118.         06h get script arguments
  119.         ES:DI -> 80-byte buffer for script arguments
  120.         07h get ???
  121.         CL = 00h-15h specifies what to get
  122.         ES:DI -> WORD to be set with desired value on return
  123.         08h get ???
  124.         ES:DI -> WORD to be set with returned value
  125.         09h get ???
  126.         ES:DI -> WORD to be set with returned value
  127.         0Bh store code for interrupt handler???
  128.         ES:DI -> data
  129.         CX = number of bytes
  130.         0Ch ???
  131.         ES:DI -> ???
  132.         0Dh get ???
  133.         ES:DI -> BYTE to be set with returned value
  134.         0Eh set ??? flag
  135.         0Fh clear ??? flag
  136.         10h ???
  137.         Return: AL = 04h or 05h if failed
  138.         11h ???
  139.         Return: AL = 05h if failed
  140.         12h get ???
  141.         ES:DI -> buffer
  142.         Return: CX = number of bytes returned in buffer
  143.         13h ???
  144. Return: AH = 00h
  145.     AL = status
  146.         00h successful
  147.         01h invalid function
  148.         02h ???
  149.         03h ???
  150.         04h ???
  151.         05h ???
  152. ----------60---------------------------------
  153. INT 60 - PC/370 v4.2 - ???
  154.     ???
  155. Return: ???
  156. Notes:    PC/370 is an IBM 370 emulator by Donald S. Higgins
  157.     this is the default interrupt, however the documentation includes
  158.       instructions for patching the system for another interrupt
  159. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  160. ----------60---------------------------------
  161. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  162. SeeAlso: INT 61"JPI"
  163. ----------60---------------------------------
  164. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  165.    The handler for the interrupt will start with a 3-byte jump instruction, 
  166.    followed by the ASCIZ string "PKT DRVR".  To find the interrupt being used
  167.    by the driver, an application should scan through interrupt vectors 60h to
  168.    80h (20h through FFh for v1.10+ of the specification) until it finds one
  169.    with the "PKT DRVR" string.    AH values of 80h to FFh have been reserved
  170.    for user-defined additions.
  171. ----------6000-------------------------------
  172. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  173.     AH = 00h
  174. Return: AX = 0000h    profiling is off
  175.         otherwise profiling is on
  176. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  177. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  178. ----------6000-------------------------------
  179. INT 60 - MDEBUG - GET STATUS
  180.     AH = 00h
  181.     DS:SI -> password or a null byte
  182. Return: AX = return code
  183.         FFFEh password is invalid
  184.         FFFDh display mode is invalid
  185.        else successful
  186.         ES = value of the monitor register SE
  187.         DI = value of the monitor register OF
  188.         CH = monitor color
  189.         CL = debugger color
  190.         BH = monitor start line
  191.         BL = debugger start line
  192.         AH = makecode of the hotkey
  193.         AL = ASCII code of the hotkey
  194.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  195.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  196.         DH = basic process number for the communication with drivers
  197.             process number for the display driver, DH+1 = process
  198.             number for the command driver(s)
  199.     DS:SI -> MDEBUG identification table
  200. Notes:    MDEBUG is a shareware memory-resident debugger by Bernd Schemmer
  201.     MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  202.       through INT 67; the interrupt handler is preceded by the signature
  203.       "USERINT" and is not chained
  204.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  205.       passwords are active; enough stack space must be provided for an
  206.       INT 10h call
  207. SeeAlso: AH=02h"MDEBUG"
  208.  
  209. Format of MDEBUG identification table:
  210. Offset    Size    Description
  211.  -2    WORD    entry offset
  212.  00h    WORD    CS of MDEBUG
  213.  02h    DWORD    old INT 08h vector
  214.  06h    DWORD    old INT 09h vector
  215.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  216.  0Eh    BYTE    length of version string
  217.  0Fh  N BYTEs    version string
  218. ----------6001-------------------------------
  219. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  220.     AH = 01h
  221.     DS:SI -> password or a null byte
  222. Return: AX = return code
  223.         FFFEh password is invalid
  224.         FFFDh display mode is invalid
  225.        else successful
  226.         ES:DI point to the help registers of MDEBUG
  227.            ES:DI-02h  -> R0
  228.            ES:DI      -> R1
  229.            ES:DI+02h  -> R2
  230.            ES:DI+04h  -> R3
  231.            ...
  232.            ES:DI+0Eh  -> R8
  233. ----------6001-------------------------------
  234. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  235.     AH = 01h
  236. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  237. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  238. ----------6001FF-----------------------------
  239. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  240.     AX = 01FFh
  241.     BX = handle returned by function 02h
  242. Return: CF set on error
  243.         DH = error code (see below)
  244.     CF clear if successful
  245.         BX = version
  246.         CH = network interface class (see below)
  247.         DX = interface type (see below)
  248.         CL = number
  249.         DS:SI -> name
  250.         AL = driver functions supported
  251.         01h basic
  252.         02h basic and extended
  253.         05h basic and high-performance
  254.         06h basic, high-performance, and extended
  255.         FFh not installed
  256. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  257.       the packet driver specification
  258.  
  259. Values for error code:
  260.  01h "BAD_HANDLE"    invalid handle number 
  261.  02h "NO_CLASS"        no interfaces of the specified class found
  262.  03h "NO_TYPE"        no interfaces of the specified type found
  263.  04h "NO_NUMBER"    no interfaces of the specified number found
  264.  05h "BAD_TYPE"        bad packet type
  265.  06h "NO_MULTICAST"    interface does not support multicast messages
  266.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  267.  08h "BAD_MODE"        invalid receiver mode
  268.  09h "NO_SPACE"        insufficient space
  269.  0Ah "TYPE_INUSE"    type accessed but never released
  270.  0Bh "BAD_COMMAND"    bad command
  271.  0Ch "CANT_SEND"    packet could not be sent
  272.  0Dh "CANT_SET"        hardware address could not be changed
  273.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  274.  0Fh "CANT_RESET"    could not reset interface
  275.  
  276. Values for Network Interface classes/types:
  277.     Class 01h  Ethernet/IEEE 802.3     
  278.     01h 3COM 3C500/3C501
  279.     02h 3COM 3C505
  280.     03h MICOM-Interlan NI5010
  281.     04h BICC Data Networks 4110
  282.     05h BICC Data Networks 4117
  283.     06h MICOM-Interlan NP600
  284.     08h Ungermann-Bass PC-NIC
  285.     09h Univation NC-516
  286.     0Ah TRW PC-2000    
  287.     0Bh MICOM-Interlan NI5210
  288.     0Ch 3COM 3C503
  289.     0Dh 3COM 3C523
  290.     0Eh Western Digital WD8003
  291.     0Fh Spider Systems S4
  292.     10h Torus Frame Level
  293.     11h 10Net Communications
  294.     12h Gateway PC-bus
  295.     13h Gateway AT-bus
  296.     14h Gateway MCA-bus
  297.     15h IMC PCnic
  298.     16h IMC PCnic II
  299.     17h IMC PCnic 8-bit
  300.     18h Tigan Communications
  301.     19h Micromatic Research
  302.     1Ah Clarkson "Multiplexor"
  303.     1Bh D-Link 8-bit
  304.     1Ch D-Link 16-bit
  305.     1Dh D-Link PS/2
  306.     1Eh Research Machines 8
  307.     1Fh Research Machines 16
  308.     20h Research Machines MCA
  309.     21h Radix Microsystems EXM1 16-bit
  310.     22h Interlan Ni9210
  311.     23h Interlan Ni6510
  312.     24h Vestra LANMASTER 16-bit
  313.     25h Vestra LANMASTER 8-bit
  314.     26h Allied Telesis PC/XT/AT
  315.     27h Allied Telesis NEC PC-98
  316.     28h Allied Telesis Fujitsu FMR
  317.     29h Ungermann-Bass NIC/PS2
  318.     2Ah Tiara LANCard/E AT
  319.     2Bh Tiara LANCard/E MC
  320.     2Ch Tiara LANCard/E TP
  321.     2Dh Spider Communications SpiderComm 8
  322.     2Eh Spider Communications SpiderComm 16
  323.     2Fh AT&T Starlan NAU
  324.     30h AT&T Starlan-10 NAU
  325.     31h AT&T Ethernet NAU
  326.     32h Intel smart card
  327.     33h Xircom Packet Adapter
  328.     34h Aquila Ethernet
  329.     35h Novell NE1000
  330.     36h Novell NE2000
  331.     37h SMC PC-510
  332.     38h AT&T Fiber NAU
  333.     39h NDIS to Packet Driver adapter
  334.     3Ah Racal-InterLan ES3210
  335.     3Bh General Systems ISDN simulated Ethernet
  336.     3Ch Hewlett-Packard
  337.     3Dh IMC EtherNic-8
  338.     3Eh IMC EtherNic-16
  339.     3Fh IMC EtherNic-MCA
  340.     40h NetWorth EtherNext
  341.     41h Dataco Scanet
  342.     42h DEC DEPCA
  343.     43h C-Net
  344.     44h Gandalf LANLine
  345.     45h Apricot built-in
  346.     46h David Systems Ether-T
  347.     47h ODI to Packet Driver adapter
  348.     48h AMD Am21110-16
  349.     49h Intel ICD Network controller family
  350.     4Ah Intel ICD PCL2
  351.     4Bh Intel ICD PCL2A
  352.     4Ch AT&T LANPacer
  353.     4Dh AT&T LANPacer+
  354.     4Eh AT&T EVB
  355.     4Fh AT&T StarStation
  356.     50h SLIP simulated ethernet
  357.     51h Racal-Interlan NIA310
  358.     52h Racal-Interlan NISE
  359.     53h Racal-Interlan NISE30
  360.     54h Racal-Interlan NI6610
  361.     55h Ethernet over IP/UDP
  362.     Class 02h  ProNET-10
  363.     01h Proteon p1300
  364.     02h Proteon p1800
  365.     Class 03h  IEEE 802.5/ProNet-4
  366.     01h IBM Token-Ring Adapter
  367.     02h Proteon p1340
  368.     03h Proteon p1344
  369.     04h Gateway PC-bus
  370.     05h Gateway AT-bus
  371.     06h Gateway MCA-bus
  372.     39h NDIS to Packet Driver adapter
  373.     47h ODI to Packet Driver adapter
  374.     Class 04h  Omninet
  375.     Class 05h  Appletalk
  376.     01h ATALK.SYS adapter
  377.     Class 06h  Serial Line
  378.     01h Clarkson 8250-SLIP
  379.     02h Clarkson "Multiplexor"
  380.     Class 07h  StarLAN (subsumed by Ethernet class)
  381.     Class 08h  ARCnet
  382.     01h Datapoint RIM
  383.     Class 09h  AX.25
  384.     01h Ottawa PI card
  385.     Class 0Ah  KISS
  386.     Class 0Bh  IEEE 802.3 with 802.2 headers
  387.     types same as for class 01h
  388.     Class 0Ch  FDDI with 802.2 headers
  389.     01h Western Digital
  390.     02h Frontier Technology
  391.     Class 0Dh  Internet X.25
  392.     01h Western Digital
  393.     02h Frontier Technology
  394.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  395.     01h NT LANSTAR/8
  396.     02h NT LANSTAR/MC
  397.     Class 0Fh  SLFP (MIT serial specification)
  398.     01h MERIT
  399.     Class 10h  PPP (Point-to-Point Protocol)
  400.  
  401. Note: class and type numbers are cleared through FTP Software
  402. ----------6002-------------------------------
  403. INT 60 - MDEBUG - SET STATUS
  404.     AH = 02h
  405.     DS:SI -> password or a null byte
  406.     ES = new value for the register SE
  407.     DI = new value for the register OF
  408.     CH = new monitor color if nonzero
  409.     CL = new debugger color if nonzero
  410.     BH = new monitor start line if nonzero
  411.     BL = new debugger start line if nonzero
  412.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  413.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  414.         if nonzero
  415.     DH = if nonzero, new basic process number for communication with the
  416.         drivers (DH = multiplex number for the display driver,
  417.         DH+1 = multiplex number for the command driver or drivers)
  418. Return: AX = return code
  419.         FFFFh call not allowed
  420.         FFFEh password is invalid
  421.         FFFDh display mode is invalid
  422.         0000h successful, status changed
  423.        else AL = error code
  424.             bit 0 invalid monitor start line
  425.             1 invalid debugger start line
  426.             2 invalid hotkey
  427.             3 invalid process number
  428.               4-7 reserved
  429. Note:    the values of the registers SE and OF are always changed, the other
  430.       values are only changed if they are valid
  431. SeeAlso: AH=00h"MDEBUG"
  432. ----------6002-------------------------------
  433. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  434.     AH = 02h
  435.     AL = interface class
  436.     BX = interface type
  437.     DL = interface number
  438.     DS:SI -> type
  439.     CX = length of type (0000h for all packets)
  440.     ES:DI -> receiver
  441. Return: CF set on error
  442.         DH = error code (see AX=01FFh)
  443.     CF clear if successful
  444.         AX = handle        
  445. SeeAlso: AH=03h"FTP"
  446.  
  447. Receiver is called with:
  448.     AX = subfunction
  449.         00h get packet buffer
  450.         DX = lookahead length (v1.10+)
  451.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  452.         DI = error flags (class dependent) (v1.10+)
  453.         Return: ES:DI -> packet buffer
  454.                 0000h:0000h means throw away packet
  455.             CX = size of buffer (v1.10+), may be smaller than
  456.                 incoming data
  457.         01h copy completed
  458.         DS:SI -> buffer
  459.         CX = bytes actually copied (v1.10+)
  460.     BX = handle
  461.     CX = buffer length
  462. when a packet is received
  463. ----------6002-------------------------------
  464. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  465.     AH = 02h
  466. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  467. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  468. ----------6003-------------------------------
  469. INT 60 - MDEBUG - POP UP
  470.     AH = 03h
  471.     DS:SI point to the password or a null byte
  472.     ES -> new value for the register SE
  473.     DI -> new value for the register OF
  474. Return: AX = return code
  475.         FFFFh call not allowed
  476.         FFFEh password is invalid
  477.         FFFDh display mode is invalid
  478.        else successful
  479. SeeAlso: AH=04h"MDEBUG"
  480. ----------6003-------------------------------
  481. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  482.     AH = 03h
  483.     BX = handle
  484. Return: CF set on error
  485.        DH = error code (see AX=01FFh)
  486.     CF clear if successful    
  487. SeeAlso: AH=02h"FTP"
  488. ----------6003-------------------------------
  489. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  490.     AH = 03h
  491. Return: ES:BX -> profiling table
  492. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  493. SeeAlso: AH=04h"SYS_PROF"
  494. ----------6004-------------------------------
  495. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  496.     AH = 04h
  497.     DS:SI -> buffer
  498.     CX = length
  499. Return: CF set on error
  500.         DH = error code (see AX=01FFh)
  501.     CF clear if successful
  502. Note:    the buffer may be modified immediately upon return from this call
  503. SeeAlso: AH=0Bh
  504. ----------6004-------------------------------
  505. INT 60 - MDEBUG - POP UP
  506.     AH = 04h
  507.     DS:SI -> password or a null byte
  508. Return: AX = return code
  509.         FFFFh call not allowed
  510.         FFFEh password is invalid
  511.         FFFDh display mode is invalid
  512.        else successful
  513. SeeAlso: AH=03h"MDEBUG"
  514. ----------6004-------------------------------
  515. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  516.     AH = 04h
  517. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  518. SeeAlso: AH=03h"SYS_PROF"
  519. ----------6005-------------------------------
  520. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  521.     AH = 05h
  522.     BX = handle (optional for v1.10+)
  523. Return: CF set on error
  524.        DH = error code (see AX=01FFh)
  525.     CF clear if successful
  526. ----------6005-------------------------------
  527. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  528.     AH = 05h
  529.     DS:SI -> password or a null byte
  530.     BL = new value for the semaphor of MDEBUG
  531.          00h  enable popup of MDEBUG
  532.          else disable popup of MDEBUG
  533. Return: AX = return code
  534.         FFFEh password is invalid
  535.         FFFDh display mode is invalid
  536.        else successful
  537.         BL = old value of the semapor of MDEBUG
  538.         BH = old value of the INT 08h semaphor
  539.             (this semaphor is always reset after this function)
  540. ----------6006-------------------------------
  541. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  542.     AH = 06h
  543.     BX = handle (optional for v1.10+)
  544.     ES:DI -> buffer
  545.     CX = length
  546. Return: CF set on error
  547.         DH = error code (see AX=01FFh)
  548.     CF clear if successful
  549.         CX = length    
  550. Note:    copies the local net address associated with the handle into the buffer
  551. ----------6006-------------------------------
  552. INT 60 - MDEBUG - GET PASSWORD STATUS
  553.     AH = 06h
  554. Return: AL = status
  555.         00h password inactive
  556.         01h password active
  557. ----------6007-------------------------------
  558. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  559.     AH = 07h
  560.     BX = handle (optional for v1.10+)
  561. Return: CF set on error
  562.         DH = error code (see AX=01FFh)
  563.     CF clear if successful
  564. ----------600A-------------------------------
  565. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  566.     AH = 0Ah
  567. Return: CF set on error
  568.         DH = error code (0Bh) (see AX=01FFh)
  569.     CF clear if successful
  570.         ES:DI -> parameter table (see below)
  571.  
  572. Format of parameter table:
  573. Offset    Size    Description
  574.  00h    BYTE    major revision of packet driver spec driver conforms to
  575.  01h    BYTE    minor revision of packet driver spec
  576.  02h    BYTE    length of this structure in bytes
  577.  03h    BYTE    length of a MAC-layer address
  578.  04h    WORD    maximum transfer unit, including MAC headers
  579.  06h    WORD    buffer size for multicast addr
  580.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  581.  0Ah    WORD    number of transmit buffers
  582.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  583. ----------600B-------------------------------
  584. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  585.     AH = 0Bh
  586.     DS:SI -> buffer
  587.     CX = length of buffer
  588.     ES:DI -> FAR function to call when buffer becomes available
  589. Return: CF set on error
  590.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  591.     CF clear if successful
  592. Notes:    unlike function 04h, the buffer is not available for modification as
  593.       soon as the call returns; the buffer may be queued by the driver and
  594.       not processed until later
  595.     this function has been dropped from v1.10+ of the specification and
  596.       replaced by function 0Ch
  597. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  598.  
  599. Completion function called with:
  600.     AX = result
  601.         00h copy OK
  602.         nonzero error
  603.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  604. ----------600C-------------------------------
  605. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  606.     AH = 0Ch
  607.     ES:DI -> pointer to IOCB
  608. Return: CF set on error
  609.         DH = error code (see AX=01FFh)
  610.     CF clear if successful
  611. SeeAlso: AH=04h"Packet Driver",AH=09h"Packet Driver"
  612.  
  613. Format of IOCB:
  614. Offset    Size    Description
  615.  00h    DWORD    pointer to buffer
  616.  04h    WORD    length of buffer
  617.  06h    BYTE    flags
  618.         bit 0: packet driver is finished with IOCB
  619.         bit 1: application requests upcall when driver completes
  620.  07h    DWORD    function address for upcall
  621.  0Bh  4 BYTEs    future gather write
  622.  0Fh    BYTE    ???
  623.  10h  8 BYTEs    private driver workspace
  624.  
  625. Completion function called with:
  626.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  627. ----------600C-------------------------------
  628. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  629.     AH = 0Ch
  630. Return: AL = status
  631.         00h successful
  632.         ES:SI -> 6-byte station address
  633.         02h semaphore service is unavailable
  634. ----------600D-------------------------------
  635. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  636.     AH = 0Dh
  637.     ES:DI -> IOCB
  638. Return: CF set on error
  639.         DH = error code (see AX=01FFh)
  640.     CF clear if successful
  641. SeeAlso: AH=0Ch"Packet Driver"
  642. ----------6011-------------------------------
  643. INT 60 - 3com, 10-NET, Banyan VINES - LOCK AND WAIT
  644.     AH = 11h
  645.     AL = drive number or 0
  646.     DX = number of seconds to wait
  647.     ES:SI = Ethernet address or 0
  648.     DS:BX -> 31-byte ASCIZ semaphore name
  649. Return: AL = status
  650.         00h successful
  651.         01h timeout
  652.         02h server not responding
  653.         03h invalid semaphore name
  654.         04h semaphore list is full
  655.         05h invalid drive ID
  656.         06h invalid Ethernet address
  657.         07h not logged in
  658.         08h write to network failed
  659.         09h semaphore already logged for this CPU
  660. SeeAlso: AH=12h,AH=13h
  661. ----------6012-------------------------------
  662. INT 60 - 3com, 10-NET, Banyan VINES - LOCK
  663.     AH = 12h
  664.     AL = drive number or 00h
  665.     ES:SI = Ethernet address or 0000h:0000h
  666.     DS:BX -> 31-byte ASCIZ semaphore name
  667. Return: AL = status (see also AH=11h)
  668.         01h semaphore currently locked by another PC
  669. Note:    unlike function 11h, this function returns immediately
  670. SeeAlso: AH=11h,AH=13h
  671. ----------6013-------------------------------
  672. INT 60 - 3com, 10-NET, Banyan VINES - UNLOCK
  673.     AH = 13h
  674.     AL = drive number or 00h
  675.     ES:SI = Ethernet address or 0000h:0000h
  676.     DS:BX -> 31-byte ASCIZ semaphore name
  677. Return: AL = status (see also AH=11h)
  678.         1 semaphore not locked
  679. SeeAlso: AH=11h,AH=12h
  680. ----------6014-------------------------------
  681. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  682.     AH = 14h
  683.     BX = handle (optional for v1.10+)
  684.     CX = mode
  685.         01h turn off receiver
  686.         02h receive only packets sent to this interface
  687.         03h mode 2 plus broadcast packets
  688.         04h mode 3 plus limited multicast packets
  689.         05h mode 3 plus all multicast packets
  690.         06h all packets
  691.         07h raw mode for serial line only (v1.10+)
  692. Return: CF set on error
  693.        DH = error code (01h,08h) (see AX=01FFh)
  694.     CF clear if successful
  695. SeeAlso: AH=15h
  696. ----------6015-------------------------------
  697. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  698.     AH = 15h
  699.     BX = handle (optional for v1.10+)
  700. Return: CF set on error
  701.         DH = error code (01h) (see AX=01FFh)
  702.     CF clear if successful
  703.         AX = mode    
  704. SeeAlso: AH=14h
  705. ----------6016-------------------------------
  706. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  707.     AH = 16h
  708.     ES:DI -> multicast list
  709.     CX = length of list in bytes
  710. Return: CF set on error
  711.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  712.     CF clear if successful
  713. SeeAlso: AH=17h
  714. ----------6017-------------------------------
  715. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  716.     AH = 17h
  717. Return: CF set on error
  718.         DH = error code (06h,09h) (see AX=01FFh)
  719.     CF clear if successful
  720.         ES:DI -> multicast addresses (do not modify)
  721.         CX = bytes of multicast addresses currently in use
  722. SeeAlso: AH=16h
  723. ----------6018-------------------------------
  724. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  725.     AH = 18h
  726.     BX = handle (optional for v1.10+)
  727. Return: CF set on error
  728.         DH = error code (01h) (see AX=01FFh)
  729.     CF clear if successful
  730.         DS:SI -> statistics (see below)
  731.  
  732. Format of statistics:
  733. Offset    Size    Description
  734.  00h    DWORD    packets in
  735.  04h    DWORD    packets out
  736.  08h    DWORD    bytes in
  737.  0Ch    DWORD    bytes out
  738.  10h    DWORD    errors in
  739.  14h    DWORD    errors out
  740.  18h    DWORD    packets dropped
  741. ----------6019-------------------------------
  742. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  743.     AH = 19h
  744.     ES:DI -> address
  745.     CX = length of address
  746. Return: CF set on error
  747.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  748.     CF clear if successful
  749.         CX = length
  750. ----------601A-------------------------------
  751. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  752.     AH = 1Ah
  753.     DS:SI -> buffer
  754.     CX = length of buffer
  755. Return: CF set on error
  756.         DH = error code (see AX=01FFh)
  757.     CF clear if successful
  758. SeeAlso: AH=1Ch
  759. ----------601B-------------------------------
  760. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  761.     AH = 1Bh
  762. Return: CF set on error
  763.         DH = error code (see AX=01FFh)
  764.     CF clear if successful
  765. SeeAlso: AH=1Ch
  766. ----------601C-------------------------------
  767. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  768.     AH = 1Ch
  769.     DS:SI -> buffer
  770.     CX = length of buffer
  771.     DX = timeout in clock ticks
  772. Return: CF set on error
  773.         DH = error code (see AX=01FFh)
  774.     CF clear if successful
  775.         CX = number of bytes transferred to buffer
  776. SeeAlso: AH=1Ah,AH=1Bh
  777. ----------60AD-------------------------------
  778. INT 60 - AccessDOS - API
  779.     AH = ADh
  780.     AL = function
  781.         E1h ???
  782.         Return: AX = ???
  783.         E2h get configuration
  784.         Return: BX:AX -> configuration data
  785. Notes:    AccessDOS is a public domain TSR developed at The Trace Research and
  786.       Development Center which provides extensions for keyboard, mouse,
  787.       and sound access by the visually, hearing, or motor-control
  788.       impaired.
  789.     INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  790.       vector in the range 60h through 66h.
  791. ----------61---------------------------------
  792. INT 61 - reserved for user interrupt
  793. ----------61---------------------------------
  794. INT 61 - Atari Portfolio - EXTENDED BIOS
  795.    provides subfunctions such as turning off the machine, accessing internal
  796.    variables, and mapping memory cards
  797. SeeAlso: INT 60"Atari"
  798. ----------61---------------------------------
  799. INT 61 - HP 95LX System Manager - LOAD DS
  800. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  801. ----------61---------------------------------
  802. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  803. SeeAlso: INT 61"JPI"
  804. ----------61---------------------------------
  805. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  806.     AH = system call number
  807. Return: AL = basic error
  808.     AH = suberror number
  809. ----------61---------------------------------
  810. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  811. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  812. ----------61---------------------------------
  813. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  814.     BX:DX -> control block
  815. SeeAlso: INT 67"Sangoma"
  816. ----------61---------------------------------
  817. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  818. Note:    the virus copies the original INT 21h vector into INT 61h
  819. SeeAlso: INT 21h,INT 60h"VIRUS",INT 6Bh"VIRUS"
  820. ----------610000-----------------------------
  821. INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY
  822.     AX = 0000h
  823.     BX = zoom factor (0-7)
  824. Notes:    zooms the display based on the given zoom factor
  825.     INT 61h is the default interrupt; the actual interrupt number can be
  826.       obtained by calling INT 16/AH=FFh
  827. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0001h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  828. SeeAlso: INT 61/AX=0005h"OPTIMA"
  829. ----------610001-----------------------------
  830. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  831.     AX = 0001h
  832.     DS:DX -> communications control block (function 0001h)
  833. Return: AX = status
  834.         0000h  successful
  835.         0001h  service not installed
  836.         0002h  invalid service ID
  837.         0098h  resource already in use
  838.         009Eh  address family does not exist
  839.         009Fh  socket type does not exist
  840.         00A0h  protocol does not exist
  841.         00A1h  no more sockets available
  842.         00A2h  no more buffer space available
  843. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  844.       interrupt handler is identified by the string "BANV" in the four
  845.       bytes immediately preceding the interrupt handler
  846.  
  847. Format of control block:
  848. Offset    Size    Description
  849.  00h    WORD    0001h
  850.  02h    WORD    pointer to argument block
  851.  04h    WORD    error return code
  852.  06h  4 BYTEs    reserved
  853.  
  854. Format of argument block:
  855. Offset    Size    Description
  856.  00h    WORD    pointer to 2-byte buffer for socket identifier
  857.  02h    WORD    address family
  858.         0003h Banyan
  859.  04h    WORD    socket type
  860.         in address family 0003h
  861.             0001h IPC socket
  862.             0002h SPP socket
  863.  06h    WORD    protocol number
  864.         FFFFh default
  865.  08h    WORD    pointer to 16-byte buffer for socket address
  866.  0Ah    WORD    local port number
  867.         0000h if service should assign transient port number
  868.         0001h to 01FFh well-known port number (assigned by Banyan)
  869.  
  870. Format of IPC port:
  871. Offset    Size    Description
  872.  00h    WORD    address family (always 0003h for Banyan ports)
  873.  04h  4 BYTEs    network number (server's serial number)
  874.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  875.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  876.  0Ah    BYTE    hop count
  877.  0Bh  5 BYTEs    filler
  878. ----------610001-----------------------------
  879. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  880.     AX = 0001h
  881.     DS:DX -> communications control block (function 0002h)
  882. Return: AX = status
  883.         0000h  successful
  884.         0001h  service not installed
  885.         0002h  invalid service ID
  886.         0003h-000Ah reserved for BANV interface errors
  887.         0097h  invalid socket identifier
  888.         009Bh  destination node unreachable
  889.         009Ch  message overflow
  890.         009Dh  destination socket nonexistent
  891.         00A2h  no more buffer space
  892.         00A3h  timeout
  893.         00B1h  resource disconnect
  894. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  895.       interrupt handler is identified by the string "BANV" in the four
  896.       bytes immediately preceding the interrupt handler
  897.  
  898. Format of control block:
  899. Offset    Size    Description
  900.  00h    WORD    0002h
  901.  02h    WORD    pointer to argument block (see below)
  902.  04h    WORD    error return code
  903.         0000h successful
  904.         0097h invalid socket ID
  905.         00A2h no more buffer space
  906.         00A3h timeout event
  907.         00A5h resource not available
  908.         00A6h internal communication failure
  909.         00B1h resource disconnect
  910.  06h  4 BYTEs    reserved
  911.  
  912. Format of argument block:
  913. Offset    Size    Description
  914.  00h    WORD    routine metric
  915.  02h    WORD    error return code
  916.  04h    WORD    socket identifier
  917.  06h    WORD    pointer to send buffer
  918.  08h    WORD    length of send buffer
  919.  0Ah    WORD    flags
  920.         bit 0: async request
  921.             1: reliable message
  922.             3: end of user message received
  923.             4: vectored request (if set, send buffer contains buffer
  924.             descriptors)
  925.             5: connection-specific receive
  926.             6: change to connection-specific receive mode
  927.  0Ch 16 BYTEs    socket address (see below)
  928.  1Ch    WORD    timeout value in multiples of 200ms
  929.  1Eh    WORD    connection identifier
  930.  20h    WORD    type of request
  931.         0001h send message
  932.         0002h establish a virtual connection
  933.         0003h terminate a virtual connection
  934.  
  935. Format of buffer descriptor:
  936. Offset    Size    Description
  937.  00h    WORD    data segment
  938.  02h    WORD    buffer pointer
  939.  04h    WORD    buffer length
  940.  06h    WORD    character count
  941.  
  942. Format of socket address for unreliable datagrams:
  943. Offset    Size    Description
  944.  00h    WORD    0003h      address family
  945.  02h    DWORD    FFFFFFFFh network number
  946.  06h    WORD    FFFFh      subnet number
  947.  08h    WORD          local port number
  948.  0Ah    BYTE    00h-0Fh      hop count
  949.  0Bh  5 BYTEs    0000h      filler
  950. ----------610001-----------------------------
  951. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  952.     AX = 0001h
  953.     DS:DX -> communications control block (function 0003h)
  954. Return: AX = status
  955.         0000h  successful
  956.         0001h  service not installed
  957.         0002h  invalid service ID
  958.         0003h-000Ah reserved for BANV interface errors
  959.         0097h  invalid socket identifier
  960.         00A2h  no more buffer space
  961.         00A3h  timeout
  962. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  963.       interrupt handler is identified by the string "BANV" in the four
  964.       bytes immediately preceding the interrupt handler
  965.  
  966. Format of control block:
  967. Offset    Size    Description
  968.  00h    WORD    0003h
  969.  02h    WORD    pointer to argument block (see below)
  970.  04h    WORD    error return code
  971.         0000h successful
  972.         0097h invalid socket ID
  973.         00A2h no more buffer space
  974.         00A3h timeout event
  975.         00A5h resource not available
  976.         00A6h internal communication failure
  977.         00B1h resource disconnect
  978.  06h  4 BYTEs    reserved
  979.  
  980. Format of argument block:
  981. Offset    Size    Description
  982.  00h    WORD    character count
  983.  02h    WORD    error return code
  984.  04h    WORD    socket identifier
  985.  06h    WORD    pointer to receive buffer
  986.  08h    WORD    length of receive buffer
  987.  0Ah    WORD    flags
  988.         bit 0: async request
  989.             2: flush receive buffer on overflow
  990.             3: end of user message received
  991.             4: vectored request (if set, receive buffer contains buffer
  992.             descriptors)
  993.             5: connection-specific receive
  994.             6: change to connection-specific receive mode
  995.  0Ch 16 BYTEs    socket address
  996.  1Ch    WORD    timeout value in multiples of 200ms
  997.  1Eh    WORD    connection identifier
  998.  20h    WORD    type of response
  999.         0001h message received
  1000.         0002h virtual connection established
  1001.         0003h virtual connection terminated
  1002.  
  1003. Format of buffer descriptor:
  1004. Offset    Size    Description
  1005.  00h    WORD    data segment
  1006.  02h    WORD    buffer pointer
  1007.  04h    WORD    buffer length
  1008.  06h    WORD    character count
  1009. ----------610001-----------------------------
  1010. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  1011.     AX = 0001h
  1012.     DS:DX -> communications control block (function 0004h)
  1013. Return: AX = status
  1014.         0000h  successful
  1015.         0001h  service not installed
  1016.         0002h  invalid service ID
  1017.         0003h-000Ah reserved for BANV interface errors
  1018.         0097h  invalid socket identifier
  1019. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  1020.       interrupt handler is identified by the string "BANV" in the four
  1021.       bytes immediately preceding the interrupt handler
  1022.  
  1023. Format of control block:
  1024. Offset    Size    Description
  1025.  00h    WORD    0004h
  1026.  02h    WORD    pointer to argument block (see below)
  1027.  04h    WORD    error return code
  1028.  06h  4 BYTEs    reserved
  1029.  
  1030. Format of argument block:
  1031. Offset    Size    Description
  1032.  00h    WORD    socket identifier
  1033. ----------610001-----------------------------
  1034. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  1035.     AX = 0001h
  1036.     DS:DX -> communications control block (function 0005h)
  1037. Return: AX = status
  1038.         0000h  successful
  1039.         0001h  service not installed
  1040.         0002h  invalid service ID
  1041.         0003h-000Ah reserved for BANV interface errors
  1042.         00A2h  no more buffer space available
  1043.         00A3h  timeout event
  1044. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  1045.       interrupt handler is identified by the string "BANV" in the four
  1046.       bytes immediately preceding the interrupt handler
  1047.     returns results for all asynchronous operations invoked from the
  1048.       data segment used for this call
  1049.  
  1050. Format of control block:
  1051. Offset    Size    Description
  1052.  00h    WORD    0005h
  1053.  02h    WORD    pointer to argument block (see below)
  1054.  04h    WORD    error return code
  1055.  06h  4 BYTEs    reserved
  1056.  
  1057. Format of argument block:
  1058. Offset    Size    Description
  1059.  00h    WORD    pointer to WORD event pointer
  1060.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  1061. ----------610001-----------------------------
  1062. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  1063.     AX = 0001h
  1064.     DS:DX -> communications control block (function 0008h)
  1065. Return: AX = status
  1066.         0000h  successful
  1067.         00A2h  no more buffer space available
  1068. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  1069.       Banyan interrupt handler is identified by the string "BANV" in the
  1070.       four bytes immediately preceding the interrupt handler
  1071.  
  1072. Format of control block:
  1073. Offset    Size    Description
  1074.  00h    WORD    0008h
  1075.  02h    WORD    process type
  1076.         0001h transient process
  1077.         0002h resident process
  1078.  04h    WORD    error return code
  1079.  06h  4 BYTEs    reserved
  1080. ----------610001-----------------------------
  1081. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  1082.     AX = 0001h
  1083.     DS:DX -> communications control block (function 000Bh)
  1084. Return: AX = status
  1085.         0000h  successful
  1086.         0001h  service not installed
  1087.         0002h  invalid service ID
  1088.         0003h-000Ah reserved for BANV interface errors
  1089.         00A2h  no more buffer space available
  1090. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  1091.       interrupt handler is identified by the string "BANV" in the four
  1092.       bytes immediately preceding the interrupt handler
  1093.     FAR user function is invoked with SS,DS, and ES set to segment of
  1094.       control block, and with the stack containing
  1095.         DWORD    return address
  1096.         WORD    argument pointer (sosend or sorec argument block)
  1097.         WORD    error return code
  1098.             0000h argument pointer is valid
  1099.             00A3h timeout
  1100.  
  1101. Format of control block:
  1102. Offset    Size    Description
  1103.  00h    WORD    000Bh
  1104.  02h    WORD    pointer to argument block (see below)
  1105.  04h    WORD    error return code
  1106.  06h  2 BYTEs    reserved
  1107.  08h    WORD    user CS register
  1108.  
  1109. Format of argument block:
  1110. Offset    Size    Description
  1111.  00h    WORD    pointer to user interrupt function    
  1112.  02h    WORD    pointer to user stack
  1113.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  1114. ----------610001-----------------------------
  1115. INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW
  1116.     AX = 0001h
  1117.     BX = X coordinate to center
  1118.     CX = Y coordinate to center
  1119. Notes:    Positions the zoom window such that the specified window-relative
  1120.       coordinates appear as close as possible to the center of the
  1121.       display.  Useful for scrolling and panning.
  1122.     INT 61h is the default interrupt; the actual interrupt number can be
  1123.       obtained by calling INT 16/AH=FFh
  1124. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  1125. SeeAlso: INT 61/AX=0005h"OPTIMA"
  1126. ----------610002-----------------------------
  1127. INT 61 - Banyan VINES - 3270 INTERFACE
  1128.     AX = 0002h
  1129.     BH = function
  1130.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  1131.         02h "pi2bsc" (3270/BSC only)
  1132.         03h    "pi2get"    get information stored in 3270 resident driver
  1133.         04h "pi2put"    store information in 3270 resident driver
  1134.         05h "pi2gcur"   get current screen position
  1135.         07h "pi2sdat"   send data keystroke
  1136.         08h "pi2scom"   send command keystroke
  1137.         0Ah "pi2field"  get field info for arbitrary screen positions
  1138.         0Fh "pi2stat"   get logical unit/device status
  1139.         12h "pi2nlus"   determine logical unit/device assignment
  1140.         13h "pi2gate"   specifies comm port address to gateway service
  1141.         14h "pi2attach" attach a logical unit/device
  1142.         15h "pi2sdev"   save logical unit/device info in resident driver
  1143.                 (not supported in >3.0)
  1144.         16h "pi2gdev"   get device information (not supported in >3.0)
  1145.         17h "pi2luinfo" get info about specific logical unit/device
  1146.         18h "pi2gerr"   get finer error detail
  1147.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  1148.         1Ah "pi2shut"   release memory-resident module
  1149.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  1150.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  1151.     DS:CX -> argument block (except BH=00h,1Ah)
  1152. Return: AX = status
  1153.         0000h successful
  1154.         000Bh invalid parameter or data does not fit data area
  1155.         000Ch another code path currently active in resident driver
  1156.         000Dh operation currently not allowed
  1157.         0032h encountered connection disconnect error
  1158.         0033h encountered "sosend" completion error
  1159.         0034h encountered "sosend" communication error
  1160.         0035h attach request refused.  extended error info via "pi2gerr":
  1161.             01h resource unavailable
  1162.             02h invalid type
  1163.             03h version mismatch
  1164.             04h invalid logical unit number
  1165.             05h error during ARL processing
  1166.             06h no access for user
  1167.         0071h encountered "sosock" error
  1168.         0072h encountered unrecognizable error
  1169.         0073h encountered "sowait" error (extended info via "pi2gerr")
  1170.         0074h encountered invalid type-of-request on "sowait"
  1171.         0075h encountered "sorec" error (extended info via "pi2gerr")
  1172.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  1173.         0077h encountered connection request
  1174.         0078h encountered unrecognizable data
  1175.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  1176. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  1177.       which is loaded first.  The other interface will use AX=000Ah
  1178.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  1179.       or 3270/BSC resident driver, which must be reloaded by the user
  1180.  
  1181. Format of argument block for BH=03h,04h:
  1182. Offset    Size    Description
  1183.  00h    WORD    size of data area (max 256)
  1184.  02h  N BYTEs    data area
  1185.  
  1186. Format of argument block for BH=05h:
  1187. Offset    Size    Description
  1188.  00h    WORD    logical unit/device number
  1189.  02h    WORD    pointer to WORD buffer for cursor index
  1190.  04h    WORD    pointer to BYTE buffer for current field attribute
  1191.  
  1192. Format of argument block for BH=07h:
  1193. Offset    Size    Description
  1194.  00h    WORD    logical unit/device number
  1195.  02h    WORD    ASCII data byte
  1196.  04h    WORD    pointer to WORD count of characters which will need updating
  1197.  
  1198. Format of argument block for BH=08h:
  1199. Offset    Size    Description
  1200.  00h    WORD    logical unit/device number
  1201.  02h    WORD    keystroke
  1202.         0000h Enter
  1203.         0001h Clear
  1204.         0002h PA1
  1205.         0003h PA2
  1206.         0004h PA3
  1207.         0005h PF1
  1208.         ...
  1209.         001Ch PF24
  1210.         001Dh CSELECT (cursor select)
  1211.         001Eh Insert
  1212.         001Fh Delete
  1213.         0020h EOField
  1214.         0021h EINPUT (erase input)
  1215.         0022h Reset
  1216.         0023h Attention
  1217.         0024h SysReq
  1218.         0025h Duplicate
  1219.         0026h Fieldmark
  1220.         0027h Home
  1221.         0028h NextLine
  1222.         0029h Tab
  1223.         002Ah BackTab
  1224.         002Bh cursor up
  1225.         002Ch cursor down
  1226.         002Dh cursor right
  1227.         002Eh cursor left
  1228.         002Fh double cursor right
  1229.         0030h double cursor left
  1230.         0031h PRINT
  1231.         0032h CANCEL
  1232.         0033h Backspace
  1233.  
  1234. Format of argument block for BH=0Ah:
  1235. Offset    Size    Description
  1236.  00h    WORD    logical unit/device number
  1237.  02h    WORD    screen index
  1238.  04h    WORD    pointer to WORD buffer for field length
  1239.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  1240.  
  1241. Format of argument block for BH=0Fh:
  1242. Offset    Size    Description
  1243.  00h    WORD    logical unit/device number
  1244.  02h    WORD    clear mask (clear these bits of status after returning status)
  1245.  04h    WORD    pointer to WORD buffer for status
  1246.         bit 10: status modified
  1247.         bit  9: buffer modified
  1248.         bit  8: set cursor
  1249.         bit  5: sound alarm
  1250.         bits 0,1: size of print line for printer logical units
  1251.             00 unformatted line
  1252.             01 40-character line
  1253.             10 64-character line
  1254.             11 80-character line
  1255.  
  1256. Format of argument block for BH=12h:
  1257. Offset    Size    Description
  1258.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  1259.  02h    WORD    pointer to WORD buffer for version number
  1260.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  1261.  
  1262. Format of argument block for BH=13h:
  1263. Offset    Size    Description
  1264.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  1265.  
  1266. Format of argument block for BH=14h:
  1267. Offset    Size    Description
  1268.  00h    WORD    logical unit/device number 
  1269.         0000h attach any free device of the specified type
  1270.  02h    WORD    logical unit/device type
  1271.         (3270/SNA) 01h, 02h, or 03h
  1272.         (3270/BSC) 02h display
  1273.         (3270/BSC) 03h printer
  1274.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  1275.  
  1276. Format of argument block for BH=16h:
  1277. Offset    Size    Description
  1278.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  1279.         first WORD must be set to desired logical unit/device number
  1280.  
  1281. Format of argument block for BH=17h:
  1282. Offset    Size    Description
  1283.  00h    WORD    logical unit/device number
  1284.  02h    WORD    pointer to information block in caller's DS (see below)
  1285.  
  1286. Format of argument block for BH=18h:
  1287. Offset    Size    Description
  1288.  00h    WORD    pointer to WORD buffer for major error code
  1289.  02h    WORD    pointer to WORD buffer for minor error code
  1290.  
  1291. Format of argument block for BH=19h:
  1292. Offset    Size    Description
  1293.  00h    WORD    logical unit/device number
  1294.  
  1295. Format of argument block for BH=1Ch,1Dh:
  1296. Offset    Size    Description
  1297.  00h    WORD    pointer to profile block in caller's DS (see below)
  1298.  
  1299. Format of device block, argument block for BH=15h:
  1300. Offset    Size    Description
  1301.  00h    WORD    logical unit/device number
  1302.  02h    WORD    logical unit/device type
  1303.  04h    WORD    display model number
  1304.  06h    WORD    numeric checking
  1305.  08h    WORD    status line
  1306.  0Ah    BYTE    unprotected normal field attribute
  1307.  0Bh    BYTE    unprotected intensified field attribute
  1308.  0Ch    BYTE    protected normal field attribute
  1309.  0Dh    BYTE    protected intensified field attribute
  1310.  0Eh    WORD    reserved
  1311.  10h    WORD    printer port number
  1312.  
  1313. Format of information block:
  1314. Offset    Size    Description
  1315.  00h    WORD    device model number
  1316.  02h    DWORD    screen buffer pointer
  1317.  06h    DWORD    status line pointer (see below)
  1318.  0Ah    DWORD    reserved
  1319.  
  1320. Format of status line:
  1321. Offset    Size    Description
  1322.  00h    BYTE    comm line status
  1323.         00h inactive
  1324.         01h active
  1325.  01h    BYTE    activation level
  1326.         01h physical unit activated
  1327.         02h logical unit also activated
  1328.         03h session is bound
  1329.  02h    BYTE    data traffic state
  1330.         00h inactive
  1331.         01h active
  1332.  03h    BYTE    screen ownership
  1333.         00h SLU->PLU sessoin owns screen
  1334.         01h SLU->SSCP session owns screen
  1335.  04h    BYTE    keyboard status
  1336.         00h UNLOCK - ready to accept data
  1337.         01h TIME - aid was struck
  1338.         02h SYSTEM - received response no restore
  1339.         03h FUNCTION - unavailable keyboard function
  1340.         04h INPUT - not currently used
  1341.         05h ENDFIELD - field filled in insert mode
  1342.         06h PROTECTED - attempt to enter in protected field
  1343.         07h NUMERIC - attempt to enter in numeric field
  1344.         08h PROGRAM - error in outbound data stream
  1345.  05h    BYTE    insert mode
  1346.         01h if in insert mode
  1347.  06h    BYTE    numeric
  1348.         01h if current screen buffer is numeric only
  1349.  07h    BYTE    printer status
  1350.         00h printer not assigned
  1351.         01h printer is inactive
  1352.         02h printer error
  1353.         03h currently printing
  1354.         04h printer is busy
  1355.         05h printer is very busy
  1356.  08h    BYTE    printer assignment
  1357.  09h    BYTE    maximum size of network name
  1358.  0Ah  N BYTEs    ASCIZ network name
  1359.     BYTE    maximum size of message window
  1360.       M BYTEs    null-terminated message window
  1361.     BYTE    code set
  1362.         00h EBCDIC
  1363.         01h ASCII
  1364.       M BYTEs    extended attributes
  1365.         01h extended attributes are in effect (stored at screen+1920)
  1366.             each extended attribute specifies
  1367.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  1368.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  1369.                   100=green,101=turquoise,110=yellow,111=white
  1370.     BYTE    extended color
  1371.         01h other than base color is in effect
  1372.  
  1373. Format of profile block:
  1374. Offset    Size    Description
  1375.  00h 64 BYTEs    gateway service name
  1376.  40h 16 BYTEs    gateway comm port address
  1377.  50h    WORD    primary logical unit number
  1378.  52h    WORD    secondary logical unit type
  1379.  54h    WORD    secondary logical unit number
  1380.  56h    WORD    printer assignment
  1381.  58h 50 BYTEs    keyboard definitions filename
  1382. ----------610002-----------------------------
  1383. INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM
  1384.     AX = 0002h
  1385. Note:    switches off zoom and returns window to its original state
  1386.     INT 61h is the default interrupt; the actual interrupt number can be
  1387.       obtained by calling INT 16/AH=FFh
  1388. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA"
  1389. ----------610003-----------------------------
  1390. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  1391.     AX = 0003h
  1392.     DS:BX -> argument block with function number (see below)
  1393. Return: AX = status
  1394.         0000h successful
  1395.         000Bh invalid session ID
  1396.         000Ch session not active
  1397.         000Dh invalid request type
  1398.         000Eh invalid parameters
  1399.         000Fh out of heap space
  1400.         0010h timeout on send
  1401.         0011h Banyan communications error
  1402.         0012h session not waiting for host
  1403.         0013h session is active
  1404.         0014h duplicate suspend session request
  1405.         0015h no session suspended
  1406.         0016h ring data buffer full
  1407.         0017h printer error encountered
  1408.         0018h Banyan communications error
  1409.         0019h unable to make connection
  1410.         001Ah no ring buffer specified at startup
  1411.         001Bh service is down
  1412.         001Ch invalid service name
  1413.         001Dh service is closed
  1414.         001Eh invalid connection name
  1415.         001Fh max session limit reached for service
  1416.         0020h access rights list for connection/dialout does not include
  1417.             this user
  1418.         0021h service not responding
  1419.         0022h missing telephone number
  1420.  
  1421. Format of argument block:
  1422. Offset    Size    Description
  1423.  00h    BYTE    session ID (00h)
  1424.  01h    BYTE    asynchronous interface request number
  1425.         00h initialize user buffer pointer information area
  1426.         01h send to host
  1427.         02h "control monitor"
  1428.         03h "flow control data": freeze/unfreeze display, ring buffer
  1429.         04h end active session
  1430.         05h set session parameter
  1431.         06h get session parameter
  1432.         07h set tab settings
  1433.         08h get tab settings
  1434.         09h refresh emulation screen
  1435.         0Ah suspend session temporarily
  1436.         0Bh restore previously suspended session
  1437.         0Ch set state of scroll lock checking
  1438.         0Dh exit emulation
  1439.         0Eh interrupt on character from host
  1440.         0Fh start a session
  1441.         10h start/stop printing of data received from host
  1442.         11h get file transfer parameters
  1443.         12h get connection information
  1444.         13h start/stop tracing data traffic in session
  1445.         14h interrupt on message from host
  1446.         15h reset error
  1447. ---request=00h---
  1448.  02h    WORD    pointer to info area in caller's current DS
  1449.         Offset    Size    Description
  1450.          00h    WORD    flags
  1451.                 0000h don't read interface's data buffer
  1452.                 0001h read data buffer
  1453.          02h    DWORD    pointer to ring buffer
  1454.          06h    WORD    length of ring buffer
  1455.          08h    WORD    ring buffer offset to last byte read by caller
  1456.          0Ah    DWORD    pointer to WORD containing offset of last byte
  1457.                   in ring buffer filled
  1458.          0Eh    DWORD    pointer to screen buffer
  1459.          12h    DWORD    pointer to field containing cursor position
  1460.          16h    DWORD    pointer to terminal status area (see below)
  1461. ---request=01h---
  1462.  02h    BYTE    type
  1463.         00h ASCII byte
  1464.         01h ASCII string
  1465.         02h terminal function code
  1466.         03h up arrow
  1467.         04h down arrow
  1468.         05h left arrow
  1469.         06h right arrow
  1470.         07h break
  1471.  03h  N BYTEs    type-specific info
  1472.         Offset    Size    Description
  1473.         ---ASCII byte---
  1474.          03h    BYTE    byte to send to host
  1475.         ---ASCII string---
  1476.          03h    WORD    length of string
  1477.          05h    WORD    pointer to string
  1478.         ---terminal function code (VT52/VT100)---
  1479.          03h    BYTE    function code
  1480.                 00h keypad 0
  1481.                 01h keypad 1
  1482.                 ...
  1483.                 09h keypad 9
  1484.                 0Ah keypad -
  1485.                 0Bh keypad ,
  1486.                 0Ch keypad .
  1487.                 0Dh keypad ENTER
  1488.                 0Eh PF1
  1489.                 0Fh PF2
  1490.                 10h PF3
  1491.                 11h PF4
  1492.         ---terminal function code (IBM3101)---
  1493.          03h    BYTE    function code
  1494.                 00h PF1
  1495.                 ...
  1496.                 07h PF8
  1497.                 08h Home
  1498. ---request=02h---
  1499.  02h    BYTE    display flag
  1500.         00h don't display data received from host
  1501.         01h display data
  1502. ---request=03h---
  1503.  02h    BYTE    flow control flag
  1504.         00h allow characters to be put into display or ring buffer
  1505.         01h don't place any more characters into display or ring buffer
  1506. ---request=05h,06h---
  1507.  02h    BYTE    parameter number
  1508.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  1509.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  1510.         01h parity (00h=none, 01h=odd, 02h=even)
  1511.         02h duplex (00h=full, 01h=half)
  1512.         03h character size (00h=7 bits, 01h=8 bits)
  1513.         04h stop bits (00h=1, 01h=2)
  1514.         05h XON/XOFF flow control (00h=no, 01h=yes)
  1515.         07h intercharacter delay in tenths of a second
  1516.         08h interline delay in tenths of a second
  1517.         09h auto linefeed (00h=no, 01h=yes)
  1518.         0Ah filter control characters (00h=no, 01h=yes)
  1519.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  1520.         0Ch auto wrap (00h=no, 01h=yes)
  1521.         0Dh cursor shape (00h=underscore, 01h=block)
  1522.         0Eh character set (00h=UK, 01h=US ASCII)
  1523.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  1524.  03h    BYTE    parameter value (returned for 06h)
  1525. ---request=07h,08h---
  1526.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1527.           each byte = 00h if no tab, 01h if tab at that position
  1528. ---request=0Ah---
  1529.  02h    WORD    size of session information to be saved
  1530.  04h    WORD    pointer to buffer in caller's DS
  1531. ---request=0Bh---
  1532.  02h    WORD    size of buffer into which session info is restored
  1533.  04h    WORD    pointer to buffer in caller's DS
  1534. ---request=0Ch---
  1535.  02h    BYTE    check_scroll_lock flag
  1536.         00h off
  1537.         01h on (display of host data stopped while ScrollLock on)
  1538. ---request=0Eh,14h---
  1539.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1540.  06h    DWORD    stack pointer to use when call is made
  1541. ---request=0Fh---
  1542.  02h    WORD    pointer to information area in caller's current DS
  1543.         Offset    Size    Description
  1544.          00h    WORD    length of service name
  1545.          02h    WORD    pointer to service name in caller's DS
  1546.          04h    BYTE    type of connection
  1547.                 (00h=connection name, 01h=dialout)
  1548.          05h    WORD    length of connection name/telephone number
  1549.          07h    WORD    pointer to connection name/telephone number
  1550. ---request=10h---
  1551.  02h    WORD    print capture flag (00h=off, 01h=on)
  1552. ---request=11h---
  1553.  02h    WORD    pointer to info area in caller's current DS
  1554.         Offset    Size    Description
  1555.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  1556.          01h    BYTE    direction flag (00h send, 01h receive)
  1557.          02h    BYTE    length of null-terminated PC filename
  1558.          03h    DWORD    pointer to null-terminated PC filename
  1559.          07h    BYTE    length of null-terminated host filename
  1560.          08h    DWORD    pointer to null-terminated host filename
  1561. ---request=12h---
  1562.  02h    WORD    pointer to info area in caller's current DS (see below)
  1563.         Offset    Size    Description
  1564.          00h    WORD    length of service name (returned)
  1565.          02h    WORD    pointer to 64-byte buffer for service name
  1566.          04h    BYTE    type of connection
  1567.                 00h connection name
  1568.                 01h dialout
  1569.          05h    WORD    length of connection name/telephone number
  1570.          07h    WORD    pointer to 64-byte buffer for name/telno
  1571.          09h    BYTE    server line number being used (returned)
  1572. ---request=13h---
  1573.  02h    BYTE    trace flag (00h=off, 01h=on)
  1574.  
  1575. Format of terminal status area:
  1576. Offset    Size    Description
  1577.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  1578.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  1579.  02h    BYTE    current keypad mode (VT100,VT52 only)
  1580.         4Eh ("N") numeric mode
  1581.         41h ("A") application mode
  1582.  03h  4 BYTEs    current state of LEDs (VT100 only)
  1583.         00h off
  1584.         01h on
  1585.  07h    WORD    line error count
  1586.  09h    WORD    primary error code
  1587.         0000h no error
  1588.         0001h unable to make connection
  1589.         0002h communications error, restart session
  1590.         0003h async terminal emulation service unavailable
  1591.         0004h lost carrier
  1592.         0005h all matching lines busy
  1593.         0006h no lines defined for connection name
  1594.         0007h no dial lines available on server
  1595.         0008h no matching dial lines available
  1596.         0009h out of heap space
  1597.         000Ah service error encountered
  1598.         000Bh timed out waiting to connect
  1599.         000Ch communications error
  1600.         000Dh communications error
  1601.         000Eh host wants file transferred to/from PC
  1602.         000Fh host software changed session parameter
  1603.         0010h host software changed tap settings
  1604.         0011h host software changed LED indicator
  1605.         0012h host software changed display background (secondary error
  1606.             code 00h for white on black, 01h for black on white)
  1607.         0013h host software changed display option (secondary error
  1608.             code 00h for off, 01h for on)
  1609.         0014h communications error
  1610.         0015h communications error
  1611.         0016h unable to make connection
  1612.         0017h unable to make connection
  1613.  0Bh    WORD    secondary error code
  1614. ----------610003-----------------------------
  1615. INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR
  1616.     AX = 0003h
  1617. Return: AX = zoom factor
  1618. Note:    returns the current zoom factor
  1619.     INT 61h is the default interrupt; the actual interrupt number can be
  1620.       obtained by calling INT 16/AH=FFh
  1621. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
  1622. ----------610004-----------------------------
  1623. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1624.     AX = 0004h
  1625.     DS:DX -> request block (function 0008h)
  1626. Return: AX = status
  1627.         0000h server ID returned in request block
  1628.         000Fh invalid drive
  1629.         0015h drive not ready
  1630.  
  1631. Format of request block:
  1632. Offset    Size    Description
  1633.  00h    WORD    0008h
  1634.  02h    WORD    drive number (0=default, 1=A, ...)
  1635.  04h  6 BYTEs    buffer for server ID
  1636. ----------610004-----------------------------
  1637. INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE
  1638.     AX = 0004h
  1639. Note:    Specify Mode is enabled by hot key (seeAlso below), and allows
  1640.     panning and zooming via the numeric keypad.
  1641.     INT 61h is the default interrupt; the actual interrupt number can be
  1642.       obtained by calling INT 16/AH=FFh
  1643.     The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh
  1644. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0007h"OPTIMA"
  1645. ----------610005-----------------------------
  1646. INT 61 - Banyan VINES - PRINTER CONTROL
  1647.     AX = 0005h
  1648.     DS:DX -> request block
  1649. Return: AX = status
  1650.         0000h successful
  1651.         0001h network software not installed or incompatible
  1652.  
  1653. Format of request block:
  1654. Offset    Size    Description
  1655.  00h    WORD    function
  1656.         0201h "endspool" all data for a print job has been sent
  1657.         0205h "getactive" get currently active printer port
  1658.  02h    WORD    number of active port (1-3)
  1659.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1660.  06h    WORD    0000h
  1661. ----------610005-----------------------------
  1662. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  1663.     AX = 0005h
  1664.     BX:CX -> buffer for window parameters (see below)
  1665. Note:    INT 61h is the default interrupt; the actual interrupt number can be
  1666.       obtained by calling INT 16/AH=FFh
  1667. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0003h"OPTIMA"
  1668. SeeAlso: INT 61/AX=0006h"OPTIMA"
  1669.  
  1670. Format of window parameters:
  1671. Offset    Size    Description
  1672.  00h    WORD    X start of zoom window
  1673.  02h    WORD    Y start of zoom window
  1674.  04h    WORD    X end of zoom window
  1675.  06h    WORD    Y end of zoom window
  1676.  08h    WORD    current zoom factor
  1677.  0Ah    WORD    zoom offset start X
  1678.  0Ch    WORD    zoom offset start Y
  1679. ----------610006-----------------------------
  1680. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW
  1681.     AX = 0006h
  1682.     BX:CX -> zoom window description (see below)
  1683. Notes:    width of zoom window must be a multiple of the pixel replication
  1684.       factor
  1685.     INT 61h is the default interrupt; the actual interrupt number can be
  1686.       obtained by calling INT 16/AH=FFh
  1687. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  1688. SeeAlso: INT 61/AX=0005h"OPTIMA",INT 61/AX=0008h"OPTIMA"
  1689.  
  1690. Format of zoom window description:
  1691. Offset    Size    Description
  1692.  00h    WORD    X start of zoom window
  1693.  02h    WORD    Y start of zoom window
  1694.  04h    WORD    X end of zoom window
  1695.  06h    WORD    Y end of zoom window
  1696. ----------610007-----------------------------
  1697. INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY
  1698.     AX = 0007h
  1699. Return: AX = 0000h/0001h
  1700. Notes:    In specify mode, the END key has been reserved for applications.
  1701.     Returns the current toggle state of that key. E.g. in the
  1702.       OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
  1703.       every time the cross cursor moves.
  1704.     INT 61h is the default interrupt; the actual interrupt number can be
  1705.       obtained by calling INT 16/AH=FFh
  1706. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  1707. SeeAlso: INT 61/AX=0004h"OPTIMA",INT 7A"AutoCAD"
  1708. ----------610007BX0002-----------------------
  1709. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1710.     AX = 0007h
  1711.     BX = 0002h
  1712.     DS:DX -> StreetTalk service name
  1713.     DS:DI -> port record block (see below)
  1714. Return: AX = status
  1715.         0000h successful
  1716.         0001h PC network software not installed or incompatible
  1717.         03E9h incorrect name syntax
  1718.         03EAh organization name too long
  1719.         03EBh group name too long
  1720.         03ECh item name too long
  1721.         03EDh StreetTalk name too long
  1722.         03F3h organization not found
  1723.         03F4h group not found
  1724.         03F5h StreetTalk name not found
  1725.         03F8h not a StreetTalk name
  1726.         040Dh appropriate StreetTalk name unavailable
  1727.  
  1728. Format of port record block:
  1729. Offset    Size    Description
  1730.  00h    WORD    number of 17-byte elements
  1731.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1732.         (see AX=0001h#"Sosock" for port format)
  1733. ----------610007BX0004-----------------------
  1734. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1735.     AX = 0007h
  1736.     BX = 0004h
  1737.     DS:DX -> StreetTalk name of service
  1738.     DS:DI -> port record block (see below)
  1739. Return: AX = status
  1740.         0000h successful
  1741.         0001h PC network software not installed or incompatible
  1742.         03E9h incorrect name syntax
  1743.         03EAh organization name too long
  1744.         03EBh group name too long
  1745.         03ECh item name too long
  1746.         03EDh StreetTalk name too long
  1747.         03F3h organization not found
  1748.         03F4h group not found
  1749.         03F5h StreetTalk name not found
  1750.         03F8h not a StreetTalk name
  1751.         0409h modify access denied
  1752.         040Dh appropriate StreetTalk name unavailable
  1753.  
  1754. Format of port record block:
  1755. Offset    Size    Description
  1756.  00h    WORD    number of 17-byte elements
  1757.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1758.         (see AX=0001h#"Sosock" for port format)
  1759. ----------610007BX0005-----------------------
  1760. INT 61 - Banyan VINES - GET USER NAME
  1761.     AX = 0007h
  1762.     BX = 0005h
  1763.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1764. Return: AX = status
  1765.         0000h successful
  1766.         0001h network software not installed or incompatible
  1767. Note:    if no user logged in, first byte of returned name will be 00h
  1768. ----------610007BX0006-----------------------
  1769. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1770.     AX = 0007h
  1771.     BX = 0006h
  1772.     SI = error code (>100)
  1773.     DS:DX -> 80-byte buffer for error text
  1774. Return: AX = status
  1775.         0000h successful
  1776.         0001h network software not installed or incompatible        
  1777. ----------610007BX0007-----------------------
  1778. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1779.     AX = 0007h
  1780.     BX = 0007h
  1781.     DS:DX -> NiceName block (see below)
  1782. Return: AX = status
  1783.         0000h successful
  1784.         0001h PC network software not installed or incompatible
  1785.         03E9h incorrect name syntax
  1786.         03EAh organization name too long
  1787.         03EBh group name too long
  1788.         03ECh item name too long
  1789.         03EDh StreetTalk name too long
  1790.         03F3h organization not found
  1791.         03F4h group not found
  1792.         03F5h StreetTalk name not found
  1793.         03F8h not a StreetTalk name
  1794.         040Dh appropriate StreetTalk name unavailable
  1795. SeeAlso: AX=0007h/BX=0008h
  1796.  
  1797. Format of NiceName block:
  1798. Offset    Size    Description
  1799.  00h    WORD    type of name
  1800.         0064h organization
  1801.         00C8h group
  1802.         012Ch item
  1803.  02h    WORD    pointer to ASCIZ input name
  1804.  04h    WORD    pointer to 64-byte buffer for output name
  1805. ----------610007BX0008-----------------------
  1806. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1807.     AX = 0007h
  1808.     BX = 0008h
  1809.     DS:DX -> enumerate block (see below)
  1810. Return: AX = status
  1811.         0000h successful
  1812.         0411h all matching names have been returned
  1813.         0412h some groups unavailable, all available matches returned
  1814. Note:    each program using this call should continue until a nonzero status
  1815.       is returned; otherwise, some resources will not be freed for several
  1816.       hours
  1817. SeeAlso: AX=0007h/BX=0007h
  1818.  
  1819. Format of enumerate block:
  1820. Offset    Size    Description
  1821.  00h    WORD    return code
  1822.  02h    WORD    pointer to pattern string
  1823.  04h    WORD    enumerate type
  1824.         0064h organization
  1825.         00C8h group
  1826.         012Ch item
  1827.  06h    WORD    enumerate class
  1828.         0000h unspecified (return all matching items)
  1829.         0001h user names
  1830.         0002h service names
  1831.         0003h list names
  1832.         0004h nicknames
  1833.  08h    WORD    pointer to category criteria block (see below) or 0
  1834.  0Ah    WORD    pointer to array of 64-byte returned names
  1835.  0Ch    WORD    number of names returned
  1836.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1837.           call)
  1838.  
  1839. Format of category criteria block:
  1840. Offset    Size    Description
  1841.  00h    WORD    exclude flag
  1842.         0000h return only items with the specified categories
  1843.         0001h return all items except those with the given categories
  1844.  02h    WORD    number of categories
  1845.  04h    WORD    category 1 value
  1846.  06h    WORD    category 2 value
  1847.         ...
  1848.  
  1849. Values for common service categories:
  1850.  0002h file service
  1851.  0003h print service
  1852.  0004h mail service
  1853.  0005h StreetTalk
  1854.  0006h time service
  1855.  0008h semaphore service
  1856.  0009h 3270/SNA service
  1857.  000Ah asynchronous terminal emulation service
  1858.  000Ch NETBIOS service
  1859.  000Dh PC-based service
  1860. ----------610008-----------------------------
  1861. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET
  1862.     AX = 0008h
  1863.     BX = X start of zoom offset
  1864.     CX = Y start of zoom offset
  1865. Notes:    specifies the first byte of video memory to appear in the zoom window
  1866.     INT 61h is the default interrupt; the actual interrupt number can be
  1867.       obtained by calling INT 16/AH=FFh
  1868. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0006h"OPTIMA"
  1869. ----------610008BX0002-----------------------
  1870. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1871.     AX = 0008h
  1872.     BX = 0002h
  1873.     CX = flags
  1874.         bit 0: message will remain on screen until user presses ^X
  1875.         bit 1: ring bell after displaying message
  1876.         bit 2: blink
  1877.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1878. Return: AX = status
  1879.         0000h successful
  1880.         000Bh message display function currently busy
  1881.         000Ch message queue full
  1882. Note:    queues up to three messages to be displayed on the bottom line
  1883. ----------610008BX0003-----------------------
  1884. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1885.     AX = 0008h
  1886.     BX = 0003h
  1887.     DS:DX -> request block
  1888. Return: AX = status
  1889.         0000h successful
  1890.         0001h network software not installed or incompatible
  1891. Notes:    message handler should not call BIOS or DOS functions, and should
  1892.       either call next handler or simply return
  1893.     to stop intercepting messages, set prev and next request blocks to
  1894.       point at each other
  1895.  
  1896. Format of request block:
  1897. Offset    Size    Description
  1898.  00h    DWORD    pointer to user-written message handler
  1899.  04h    DWORD    pointer to next request block (filled in by VINES)
  1900.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1901.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  1902.  
  1903. Format of message storage area:
  1904. Offset    Size    Description
  1905.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  1906.  10h    BYTE    message flags
  1907.  11h    WORD    reserved
  1908.  13h    BYTE    length of message
  1909.  14h 80 BYTEs    message text
  1910. ----------61000A-----------------------------
  1911. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1912.     AX = 000Ah
  1913. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1914.       which is loaded second.  The first interface loaded will use AX=0002h
  1915. SeeAlso: INT 61/AX=0002h
  1916. ----------6101-------------------------------
  1917. INT 61 - Banyan VINES - CHECK SERVICE
  1918.     AH = 01h
  1919.     AL = service ID
  1920.         01h communications
  1921.         02h primary 3270 emulation
  1922.         03h async terminal emulation
  1923.         04h file deflection
  1924.         07h StreetTalk
  1925.         08h environment
  1926.         0Ah secondary 3270 emulation
  1927.         0Bh semaphore service
  1928.         0Ch 3270 emulation active status
  1929.         0Dh 3270 keyboard interrupt simulator
  1930. Return: AX = status
  1931.         0000h installed
  1932.         0001h not installed
  1933.         0002h invalid ID
  1934. ----------6102-------------------------------
  1935. INT 61 - Banyan VINES - GET REVISION NUMBER
  1936.     AH = 02h
  1937.     DS:DX -> 2-byte buffer for result
  1938. Return: AX = 0000h installed
  1939.         DS:DX buffer contains revision number as
  1940.         10000d * major_ver + 100d * minor_ver + patch_revision
  1941. ----------62---------------------------------
  1942. INT 62 - reserved for user interrupt
  1943. ----------62---------------------------------
  1944. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1945. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  1946. ----------62---------------------------------
  1947. INT 62 - MS SQL Server/Sybase DBLIBRARY interface
  1948. Note:    the installation check consists of testing for the string "DBLIBRARY"
  1949.       2 bytes past the interrupt handler
  1950. SeeAlso: AH=08h"DBLIBRARY"
  1951. ----------6201-------------------------------
  1952. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  1953.     AH = 01h
  1954. Note:    Cswitch is a set of multitasking functions by Herb Rose
  1955. SeeAlso: AH=05h,AH=06h
  1956. ----------6202-------------------------------
  1957. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  1958.     AH = 02h
  1959.     DX = semaphore number (0-63)
  1960. Return: AX = FFFFh bad semaphore number
  1961.          else  success
  1962. SeeAlso: AH=03h,AH=04h
  1963. ----------6203-------------------------------
  1964. INT 62 - Cswitch - CHECK SEMAPHORE
  1965.     AH = 03h
  1966.     DX = semaphore number (0-63)
  1967. Return: AX = FFFFh not owned
  1968.          else  owned
  1969. SeeAlso: AH=02h,AH=04h
  1970. ----------6204-------------------------------
  1971. INT 62 - Cswitch - TRIGGER SEMAPHORE
  1972.     AH = 04h
  1973.     DX = semaphore number (0-63)
  1974. Return: AX = FFFFh bad semaphore number
  1975.          else  success
  1976. SeeAlso: AH=02h,AH=03h
  1977. ----------6205-------------------------------
  1978. INT 62 - Cswitch - SLEEP
  1979.     AH = 05h
  1980.     BX = seconds to sleep
  1981. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  1982. ----------6206-------------------------------
  1983. INT 62 - Cswitch - SUSPEND
  1984.     AH = 06h
  1985. SeeAlso: AH=05h,AH=08h"Cswitch"
  1986. ----------6207-------------------------------
  1987. INT 62 - Cswitch - SPAWN
  1988.     AH = 07h
  1989.     ES:BX -> function address to start executing at
  1990.     CX = priority (1-10)
  1991. Return: AX = FFFDh  no free memory control blocks
  1992.        = FFFEh  no free task control blocks
  1993.        = FFFFh  not enough memory to create new task stack
  1994.        = >0        the tcb number of the new task, indicating no error
  1995. SeeAlso: AH=0Fh,AH=10h
  1996. ----------6208-------------------------------
  1997. INT 62 - Cswitch - WAKE UP TASK
  1998.     AH = 08h
  1999.     BX = tcb identifier
  2000. SeeAlso: AH=05h,AH=06h
  2001. ----------6208-------------------------------
  2002. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???UNINSTALL/GET PSP ADDR
  2003.     AH = 08h
  2004.     CX = FFFEh
  2005.     DX = FFFFh
  2006. Return: AX = PSP address of resident DBLIBRARY
  2007. Note:    this call does not free the memory allocated to the TSR; the calling
  2008.       code must do the deallocation.
  2009. SeeAlso: INT 62"DBLIBRARY"
  2010. ----------6209-------------------------------
  2011. INT 62 - Cswitch - SET PRIORITY
  2012.     AH = 09h
  2013.     BX = new base priority (1-10)
  2014. Note:    the lower the priority is numerically, the more often the task will run
  2015. ----------620A-------------------------------
  2016. INT 62 - Cswitch - TEST MESSAGE QUEUE
  2017.     AH = 0Ah
  2018.     DX = queue number (0-63)
  2019. Return: AX = FFFFh bad queue number
  2020.        = 0000h nothing on queue
  2021.          else  number of bytes in first message in queue
  2022. SeeAlso: AH=0Bh,AH=0Ch
  2023. ----------620B-------------------------------
  2024. INT 62 - Cswitch - SEND MESSAGE
  2025.     AH = 0Bh
  2026.     CX = number of bytes to write
  2027.     DS:SI -> buffer
  2028.     DX = queue number (0-63)
  2029. Return: AX = FFFEh triggered by something arriving, redo the call
  2030.        = FFFFh bad queue number
  2031.        = 0000h no message was on queue
  2032.          else  number of bytes in message
  2033. SeeAlso: AH=0Ah,AH=0Ch
  2034. ----------620C-------------------------------
  2035. INT 62 - Cswitch - READ MESSAGE
  2036.     AH = 0Ch
  2037.     CX = number of bytes to read
  2038.     DS:SI -> buffer
  2039.     DX = queue number (0-63)
  2040. Return: AX = FFFFh bad queue number
  2041.          else  number of bytes transferred
  2042. SeeAlso: AH=0Ah,AH=0Bh
  2043. ----------620D-------------------------------
  2044. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  2045.     AH = 0Dh
  2046. SeeAlso: AH=0Eh
  2047. ----------620E-------------------------------
  2048. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  2049.     AH = 0Eh
  2050. SeeAlso: AH=0Dh
  2051. ----------620F-------------------------------
  2052. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  2053.     AH = 0Fh
  2054.     ES:BX -> command line
  2055.     CX = priority (1-10)
  2056.     DX = background flag
  2057.        = != 0000h  allows loading to EMS
  2058. Return: AX = 0000h task loader queue is full
  2059.        = 0001h  no error
  2060. SeeAlso: AH=07h,AH=10h,AH=13h
  2061. ----------6210-------------------------------
  2062. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  2063.     AH = 10h
  2064. SeeAlso: AH=07h,AH=0Fh
  2065. ----------6211-------------------------------
  2066. INT 62 - Cswitch - GET TCB INFORMATION
  2067.     AH = 11h
  2068.     ES:BX -> a pointer which will be set to the tcb address
  2069. Return: AX = tcb indentifier
  2070. SeeAlso: AH=12h
  2071. ----------6212-------------------------------
  2072. INT 62 - Cswitch - GET TCB ADDRESS
  2073.     AH = 12h
  2074.     ES:BX -> a pointer which will be set to the tcb table address
  2075. Return: AX = tcb indentifier
  2076. SeeAlso: AH=11h
  2077. ----------6213-------------------------------
  2078. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  2079.     AH = 13h
  2080. Return: AX = FFFCh no Memory Control Blocks available
  2081.        = FFFDh no TCBs available
  2082.        = FFFEh insufficient memory
  2083.        = FFFFh cannot open file
  2084.        = 0000h load in progress (not done yet)
  2085.          else  tcb indentifier
  2086. SeeAlso: AH=0Fh
  2087. ----------6247-------------------------------
  2088. INT 62 - PC Tools 7 COMMUTE - ???
  2089.     AH = 47h
  2090.     AL = subfunction (00h-31h)
  2091.     ???
  2092.     CF set
  2093. Return: ???
  2094. ----------6248-------------------------------
  2095. INT 62 - PC Tools 7 COMMUTE - ???
  2096.     AH = 48h
  2097.     AL = ???
  2098.     ???
  2099.     CF set
  2100. Return: ???
  2101. ----------6249-------------------------------
  2102. INT 62 - PC Tools 7 COMMUTE - ???
  2103.     AH = 49h
  2104.     ???
  2105.     CF set
  2106. Return: ???
  2107. Note:    may be the same as AH=4Ch
  2108. ----------624A-------------------------------
  2109. INT 62 - PC Tools 7 COMMUTE - ???
  2110.     AH = 4Ah
  2111.     AL = subfunction (00h-46h)
  2112.     ???
  2113.     CF set
  2114. Return: ???
  2115. ----------624B--BX1234-----------------------
  2116. INT 62 - PC Tools 7 COMMUTE - ???
  2117.     AH = 4Bh
  2118.     BX = 1234h
  2119.     CX = 1234h
  2120.     ES = ???
  2121.     CF set
  2122. Return: ???
  2123. ----------624C-------------------------------
  2124. INT 62 - PC Tools 7 COMMUTE - ???
  2125.     AH = 4Ch
  2126.     BL = subfunction
  2127.         00h ???
  2128.         02h ???
  2129. Return: CF clear if successful
  2130.     CF set on error
  2131. ----------626262-----------------------------
  2132. INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
  2133.     AX = 6262h
  2134.     CF set
  2135. Return: AX = 0000h
  2136.     BX = segment of resident code's PSP
  2137. ----------63---------------------------------
  2138. INT 63 - reserved for user interrupt
  2139. ----------63---------------------------------
  2140. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2141. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec"
  2142. ----------63---------------------------------
  2143. INT 63 - Oracle SQL Protected Mode Executive - ???
  2144. ----------63---------------------------------
  2145. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  2146.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  2147.    has been moved there) and places the old value here
  2148. ----------64---------------------------------
  2149. INT 64 - reserved for user interrupt
  2150. ----------64---------------------------------
  2151. INT 64 - Adaptec controllers - DRIVE 1 DATA
  2152. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  2153. Notes:    these vectors are used by the following Adaptec controllers:
  2154.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  2155.     these vectors are NOT used by the following Adaptec controllers:
  2156.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  2157. ----------64---------------------------------
  2158. INT 64 - Oracle SQL Protected Mode Executive - ???
  2159. ----------64---------------------------------
  2160. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  2161. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  2162.       versions do not use this interrupt for IPX/SPX access, instead
  2163.       getting an entry point from INT 2F/AX=7A00h
  2164. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  2165. ----------64---------------------------------
  2166. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  2167. ----------64---------------------------------
  2168. INT 64 - Extended Batch Language v3.14+
  2169.     AH = function
  2170.         00h to 5Fh chained to previous handler
  2171.         60h to 6Ch reserved, return immediately
  2172.         80h to FFh chained to previous handler
  2173.         6Dh (v4.01+) insert tone in queue
  2174.         AL = ???
  2175.         CX = frequency in Hertz
  2176.         DL = duration in clock ticks
  2177.         Return: AL = 00h if note stored
  2178.                = 01h if no room to store
  2179.         6Eh clear ??? counter/flag
  2180.         6Fh return counter/flag that AH=6Eh clears
  2181.         70h ???
  2182.         AL = ???
  2183.         71h ???
  2184.         AL = ???
  2185.         72h ???
  2186.         73h insert byte at end of keyboard buffer
  2187.         AL = byte to insert
  2188.         Return: AL = 00h if byte inserted
  2189.                = 01h if no room to store
  2190.         74h insert byte at front of keyboard buffer
  2191.         AL = byte to insert
  2192.         Return: AL = 00h if byte inserted
  2193.                = 01h if no room to store
  2194.         75h ???
  2195.         76h get keyboard "stack" status
  2196.         AL = 'K' if kbd read will read physical keyboard
  2197.              'S' if it will read EBL internal keyboard buffer
  2198.         AH = ???
  2199.         77h clear internal keyboard buffer
  2200.         78h ???
  2201.         AL = ???
  2202.         79h ???
  2203.         7Ah ???
  2204.         AL = ???
  2205.         7Bh ???
  2206.         AL = ???
  2207.         7Ch ???
  2208.         AL = ???
  2209.         7Dh ???
  2210.         AL = ???
  2211.         7Eh clear buffer for ???
  2212.         7Fh installation check
  2213.         Return: CX = version in BCD
  2214.             DI = segment of ???
  2215.             BX = segment of next program's PSP???
  2216. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  2217.     the chaining does not check whether the interrupt had been hooked
  2218.       before, so if you try to chain when the previous vector was 
  2219.       0000h:0000h, you'll be in trouble
  2220.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  2221.       floating-point and extended function packages
  2222. ----------65---------------------------------
  2223. INT 65 - reserved for user interrupt
  2224. ----------65---------------------------------
  2225. INT 65 - Adaptec controllers - DRIVE 1 DATA
  2226. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  2227. ----------65---------------------------------
  2228. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  2229. ----------65---------------------------------
  2230. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  2231. ----------65---------------------------------
  2232. INT 65 - SD.COM v6.2
  2233.    The unregistered version of SD62.COM uses the low byte of this vector to
  2234.    count the number of invocations, displaying a registration reminder each
  2235.    time after the 20th use.
  2236. ----------65---------------------------------
  2237. INT 65 - Ad Lib SOUND.COM - INTERFACE
  2238.     SI = function number (see separate entries for details on several)
  2239.        = 0000h Init
  2240.        = 0002h RelTimeStart
  2241.        = 0003h SetState
  2242.        = 0004h GetState
  2243.        = 0005h Flush
  2244.        = 0006h SetMode
  2245.        = 0007h GetMode
  2246.        = 0008h SetRelVolume
  2247.        = 0009h SetTempo
  2248.        = 000Ah SetTranspose
  2249.        = 000Bh GetTranspose
  2250.        = 000Ch SetActVoice
  2251.        = 000Dh GetActVoice
  2252.        = 000Eh PlayNoteDel
  2253.        = 000Fh PlayNote
  2254.        = 0010h SetTimbre
  2255.        = 0011h SetPitch
  2256.        = 0012h SetTickBeat
  2257.        = 0013h NoteOn
  2258.        = 0014h NoteOff
  2259.        = 0015h Timbre
  2260.        = 0016h SetPitchBend
  2261.        = 0017h WaveForm
  2262.     ES:BX -> arguments
  2263. Note:    the installation check consists of checking for the signature block
  2264.       immediately preceding the interrupt handler (see below)
  2265.  
  2266. Format of signature block:
  2267. Offset    Size    Description
  2268.  00h    WORD    version number
  2269.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  2270.  15h    BYTE    01h
  2271.  16h    BYTE    01h
  2272.  17h    BYTE    00h
  2273. ----------65----SI0000-----------------------
  2274. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  2275.     SI = 0000h
  2276. ----------65----SI0003-----------------------
  2277. INT 65 - Ad Lib SOUND.COM - SET STATE
  2278.     SI = 0003h
  2279.     ES:BX -> WORD state = 0000h disabled 
  2280.                 = 0001h enabled
  2281. SeeAlso: SI=0004h
  2282. ----------65----SI0004-----------------------
  2283. INT 65 - Ad Lib SOUND.COM - GET STATE
  2284.     SI = 0004h
  2285. Return: AX = 0000h all done playing sounds
  2286.        = else  still playing sounds
  2287. SeeAlso: SI=0003h
  2288. ----------65----SI0006-----------------------
  2289. INT 65 - Ad Lib SOUND.COM - SET MODE
  2290.     SI = 0006h
  2291.     ES:BX -> WORD mode = 0000h melodic
  2292.                = 0001h percussive
  2293. SeeAlso: SI=0007h
  2294. ----------65----SI0007-----------------------
  2295. INT 65 - Ad Lib SOUND.COM - GET MODE
  2296.     SI = 0007h
  2297. Return: AX = 0000h melodic
  2298.        = 0001h percussive
  2299. SeeAlso: SI=0006h
  2300. ----------65----SI000C-----------------------
  2301. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  2302.     SI = 000Ch
  2303.     ES:BX -> WORD voice = 0000h to 0008h
  2304. SeeAlso: SI=000Dh
  2305. ----------65----SI000D-----------------------
  2306. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  2307.     SI = 000Dh
  2308. Return: AX = voice (0000h to 0008h)
  2309. SeeAlso: SI=000Ch
  2310. ----------66---------------------------------
  2311. INT 66 - reserved for user interrupt
  2312. ----------66---------------------------------
  2313. INT 66 - Adaptec controllers - DRIVE 1 DATA
  2314. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  2315. ----------66---------------------------------
  2316. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  2317. ----------66---------------------------------
  2318. INT 66 - Nanosoft, Inc. TurboNET - network processing ???
  2319. Notes:    hooked but not used (IRET) by both redirector and server; called from
  2320.       server's INT 28 handler
  2321.     TurboNET is a NetBIOS-based file redirector and server
  2322. SeeAlso: INT 2F/AX=8100h
  2323. ----------66FFFBBXFFFB-----------------------
  2324. INT 66 - MicroHelp Stay-Res Plus - ???
  2325.     AX = FFFBh
  2326.     BX = FFFBh
  2327.     ???
  2328. Return: ???
  2329. SeeAlso: AX=FFFEh
  2330. ----------66FFFEBXFFFE-----------------------
  2331. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  2332.     AX = FFFEh
  2333.     BX = FFFEh
  2334. Return: only if unsuccessful
  2335. Notes:    installation check is for the interrupt handler to begin with the bytes
  2336.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  2337.       appear at offset 0005h (older versions) or the offset returned by
  2338.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  2339.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  2340.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  2341. SeeAlso: AX=FFFBh,AX=FFFFh
  2342. ----------66FFFFBXFFF0-----------------------
  2343. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  2344.     AX = FFFFh
  2345.     BX = FFF0h
  2346. Return: DI = offset of program name in interrupt handler segment
  2347. SeeAlso: AX=FFFBh,AX=FFFEh
  2348. ----------660688-----------------------------
  2349. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2350.     AX = 0688h
  2351.     ???
  2352. Return: ???
  2353. ----------660689-----------------------------
  2354. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2355.     AX = 0689h
  2356.     ???
  2357. Return: ???
  2358. ----------663345-----------------------------
  2359. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  2360.     AX = 3345h
  2361. Return: AX = FFFFh error removing TSR
  2362. Note:    the installation check consists of checking for the signature
  2363.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  2364. SeeAlso: INT 2F/AH=2Ah,INT 2F/AX=CB00h
  2365. ----------67---------------------------------
  2366. INT 67 - Adaptec controllers - DRIVE 1 DATA
  2367. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  2368. ----------67---------------------------------
  2369. INT 67 - Sangoma CCPOP 3270 resident module
  2370. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  2371. ----------6700-------------------------------
  2372. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  2373.     AH = 00h
  2374.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2375. Return: AL = status
  2376.         00h successful
  2377.         01h invalid function
  2378.         02h semaphore already locked
  2379.         03h unable to lock semaphore
  2380.         04h semaphore space exhausted
  2381.     AH = semaphore owner if status=02h
  2382. SeeAlso: AH=01h,AH=02h,INT 7F/AH=00h
  2383. ----------6701-------------------------------
  2384. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  2385.     AH = 01h
  2386.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2387. Return: AL = status (see AH=00h)
  2388.     AH = semaphore owner if status=02h
  2389. SeeAlso: AH=00h,AH=02h,INT 7F/AH=01h"Alloy"
  2390. ----------6702-------------------------------
  2391. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  2392.     AH = 02h
  2393.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2394. Return: AL = status (see AH=00h)
  2395.     AH = semaphore owner if status=02h
  2396. SeeAlso: AH=00h,AH=01h,INT 7Fh/AH=02h
  2397. ----------673F--CX5145-----------------------
  2398. INT 67 - QEMM-386 v4.23+ - INSTALLATION CHECK
  2399.     AH = 3Fh
  2400.     CX = 5145h ("QE")
  2401.     DX = 4D4Dh ("MM")
  2402. Return: AH = 00h if installed
  2403.         ES:DI -> QEMM API entry point
  2404. Notes:    if no other program has hooked INT 67, an alternate installation
  2405.       check is to test for the string
  2406.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  2407.       handler's segment; the word at offset 12h contains the offset in
  2408.       the handler's segment of the API entry point
  2409.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  2410.       the alternate QEMM installation check and entry point functions 00h,
  2411.       02h, and 03h; version 4D only provides the signature string if the
  2412.       commandline argument "DV" is provided
  2413. SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
  2414. SeeAlso: INT 2F/AX=D201h/BX=5145h
  2415.  
  2416. Call QEMM entry point with:
  2417.     AH = 00h get QEMM state
  2418.         Return: CF clear
  2419.             AL = QEMM state
  2420.                 bit 0 set if QEMM turned OFF
  2421.                 bit 1 set if in "Auto" mode
  2422.     AH = 01h set QEMM state
  2423.         AL = new state
  2424.             bit 0 set: place QEMM in OFF state
  2425.         Return: CF clear if successful
  2426.             CF set on error
  2427.     AH = 02h get ???
  2428.         Return: CF clear
  2429.             AX = segment of ??? data structure
  2430.             Data Structure
  2431.             Offset    Size    Description
  2432.              00h    BYTE    ???
  2433.              01h    WORD    ???
  2434.                  ???
  2435.     AH = 03h get QEMM version
  2436.         Return: CF clear
  2437.             AX = BX = version in BCD
  2438.         Notes:    the official docs only state that the version is
  2439.               returned in BX
  2440.             MICEMM returns AX=0001h, BX unchanged
  2441.     AH = 04h ???
  2442.         Return: DX = ???
  2443.     AH = 05h set ???
  2444.         DX = ???
  2445.     AH = 06h set mapping context???
  2446.         CX = ??? (set to 0000h by DESQview EMM.DVR)
  2447.         DX = page table number
  2448.         Return: CF clear
  2449.     AH = 07h get mapping context???
  2450.         Return: CF clear
  2451.             DX = page table number
  2452.     AH = 08h ???
  2453.         CX = ??? (set to 0000h by DESQview EMM.DVR)
  2454.         DX = linear page number
  2455.         Return: CF clear
  2456.     AH = 09h ???
  2457.         CX = ???
  2458.         Return: CF clear
  2459.             DX = linear page number
  2460.     AH = 0Ah ???
  2461.         CX = ???
  2462.         DX = linear page number
  2463.         Return: CF clear
  2464.     AH = 0Bh ???
  2465.         BX = ???
  2466.         CX = ???
  2467.         DX = ???
  2468.         Return: AH = 00h
  2469.     AH = 0Ch get ???
  2470.         Return: CF clear
  2471.             BX = 0001h
  2472.             CX = ???
  2473.             DX = ??? (apparently zero/nonzero important)
  2474.     AH = 0Dh ???
  2475.         AL = zero/nonzero ???
  2476.         Return: CF clear
  2477.     AH = 0Eh set ??? callbacks
  2478.         DS:BX -> FAR routine for ???
  2479.         ES:DX -> FAR routine for ???
  2480.         Return: CF clear
  2481.         Note:    DS:BX callback should return BX=???; ES:DX is called
  2482.               with BX=???, and should set the ??? from which the
  2483.               other handler read the value of BX.  BH and BL
  2484.               appear to be separate values.
  2485.     AH = 0Fh ???
  2486.         CX = ??? (0100h)
  2487.         DX = ??? (0010h)
  2488.         ???
  2489.         Return: AL = 00h/01h if ???
  2490.     AX = 1000h get ???
  2491.         DS:SI -> 16-buffer for ??? GDT entries
  2492.         ES:DI -> buffer for ???
  2493.         Return: CF clear
  2494.             EAX = ??? (0000A5F7h for QEMM 6.00)
  2495.             DS:SI buffer filled with two GDT descriptors
  2496.             ES:DI buffer filled with ??? (page table entries???)
  2497.             DI points beyond last byte put in ES:DI buffer
  2498.     AX = 1001h get CPU debug registers
  2499.         ES:DI -> buffer for debug registers (8 DWORDs)
  2500.         Return: CF clear
  2501.             BL = ???
  2502.             ES:DI buffer filled
  2503.     AX = 1002h set CPU debug registers
  2504.         BL = ???
  2505.         ES:DI -> buffer containing debug registers (8 DWORDs)
  2506.         Return: CF clear
  2507.     AX = 1003h get machine status word
  2508.         Return: CF clear
  2509.             EAX = contents of CR0
  2510.     AX = 1004h ???
  2511.         ???
  2512.         Return: CF clear if successful
  2513.                 EDX = linear address of ???
  2514.             CF set on error
  2515.     AX = 1005h set ???
  2516.         EDX = ???
  2517.         Return: CF clear
  2518.     AX = 1006h NOP
  2519.         Return: CF set
  2520.     AX = 1007h get ???
  2521.         Return: CF clear
  2522.             EDX = ???
  2523.     AX = 1008h ???
  2524.         CX = ???
  2525.         ???
  2526.         Return: CF clear
  2527.             EDX = linear address of ???
  2528.     AX = 1009h ??? related to task switching???
  2529.         ESI = linear address of task switch??? info
  2530.         ???
  2531.         Return: ???
  2532.         Data Structure
  2533.         Offset    Size    Description
  2534.          00h    DWORD    value for CR3 (page table directory addr)
  2535.          04h    DWORD    linear addr of arg for LGDT
  2536.          08h    DWORD    linear addr of arg for LIDT
  2537.          0Ch    WORD    LDT selector
  2538.          0Eh    WORD    TR selector
  2539.     AX = 100Ah ??? related to task switching???
  2540.     AH = 11h get memory type map
  2541.         AL = zero/nonzero ???
  2542.         ES:DI -> 256-byte buffer for memory types
  2543.         Return: CF clear
  2544.             BL = ???
  2545.             ES:DI buffer filled
  2546.         Note:    each byte of the buffer corresponds to a 4K page, and
  2547.               contains the type of that page: 00h = mappable,
  2548.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  2549.               05h = video, 06h = ROM, 07h = adapter ROM,
  2550.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  2551.               0Bh = conventional
  2552.     AH = 12h get HIRAM chain
  2553.         Return: CF clear
  2554.             BX = segment of first MCB in high memory
  2555.                 0000h if no high memory
  2556.     AX = 1300h ???
  2557.         BL = ???
  2558.         Return: CF clear
  2559.             ???
  2560.     AX = 1301h ???
  2561.         CX = ???
  2562.         DI:DX = ???
  2563.         Return: CF clear
  2564.     AX = 1302h ???
  2565.         ???
  2566.         Return: CF clear
  2567.             ???
  2568.         Note:    disables certain interrupts at the two 8259 PICs during
  2569.               execution; also modifies CRT controller during
  2570.               execution under certain circumstances
  2571.     AX = 1303h ??? EMS allocation
  2572.         BX = number of pages of EMS to allocate
  2573.         ???
  2574.         Return: CF clear if successful
  2575.             CF set on error
  2576.             ???
  2577.     AX = 1304h EMS deallocation
  2578.         DX = EMS handle
  2579.         Return: CF clear
  2580.     AX = 1305h ???
  2581.         CX = ???
  2582.         Return: CF clear
  2583.         Note:    disables certain interrupts at the two 8259 PICs during
  2584.               execution (see AX=130Ch)
  2585.     AX = 1306h ???
  2586.         ES:BX -> ???
  2587.         Return: CF clear
  2588.     AX = 1307h ???
  2589.         ???
  2590.         Return: CF clear
  2591.         Note:    disables certain interrupts at the two 8259 PICs during
  2592.               execution (see AX=130Ch)
  2593.     AX = 1308h ???
  2594.         BL = ??? (zero/nonzero)
  2595.         Return: CF clear
  2596.     AX = 1309h Hercules mode-change support
  2597.         ES:BX -> new address for Hercules mode-change callback
  2598.         Return: CF clear
  2599.         Note:    the callback function is called whenever the CRTC mode
  2600.               register is written, with AL set to the value written
  2601.     AX = 130Ah ???
  2602.         CX:DX -> ???
  2603.         Return: CF clear
  2604.     AX = 130Bh ???
  2605.         BL = ???
  2606.         Return: CF clear
  2607.             ???
  2608.     AX = 130Ch set interrupts to mask
  2609.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  2610.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  2611.         Return: CF clear
  2612.     AX = 130Dh ???
  2613.         ???
  2614.         Return: CF clear
  2615.         Note:    disables certain interrupts at the two 8259 PICs during
  2616.               execution (see AX=130Ch)
  2617.     AX = 130Eh ??? (modifies CRT controller setup)
  2618.         ???
  2619.         Return: CF clear
  2620.     AX = 130Fh ??? (resets certain values)
  2621.         ???
  2622.         Return: CF clear
  2623.     AX = 1310h ???
  2624.         ???
  2625.         Return: CF clear
  2626.         Note:    disables certain interrupts at the two 8259 PICs during
  2627.               execution (see AX=130Ch)
  2628.     AX = 1311h set ???
  2629.         BL = ???
  2630.         Return: CF clear
  2631.     AX = 1400h ???
  2632.         ES:DI -> ??? data structure (at least 24 bytes)
  2633.         BL = ???
  2634.         Return: ???
  2635.         Data structure
  2636.         Offset    Size    Description
  2637.          00h      WORD    ???
  2638.          02h    DWORD    far pointer to ???
  2639.          06h    DWORD    far pointer to ??? pointer array (see below)
  2640.          0Ah    DWORD    far pointer to ???
  2641.          0Eh    DWORD    ???
  2642.          12h    WORD    segment of ???
  2643.          14h    DWORD    far pointer to ???
  2644.         Pointer array
  2645.         Offset    Size    Description
  2646.          00h    WORD    number of pointers to follow
  2647.          02h  N DWORDs    far pointers to ???
  2648.         Note: QEMM converts the pointers into linear addresses in place
  2649.     AX = 1401h ???
  2650.         Return: CF clear
  2651.             ???
  2652.     AX = 1402h ???
  2653.         BL = function
  2654.             00h NOP
  2655.             01h ???
  2656.             02h ???
  2657.             other ???
  2658.         ES:DI -> ???
  2659.         Return: CF clear
  2660.             ???
  2661.         Data structure
  2662.         Offset    Size    Description
  2663.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  2664.          02h    WORD    segment of ??? (word at X:0124h set to this)
  2665.          04h    WORD    number of paragraphs of ???
  2666.          06h  3 WORDs    ??? (copied to X:0000h)
  2667.          0Ch
  2668.     AX = 1403h add ??? to list and ???
  2669.         ES:DI -> ??? structure added to end of ??? list
  2670.             (at least 31 bytes, DWORD at offset 06h used for
  2671.              storing pointer to next struc, WORD at offset 00h
  2672.              seems to be a key or index)
  2673.         Return: CF clear
  2674.     AX = 1404h NOP
  2675.     AX = 1405h remove ??? from ??? list
  2676.         BX = key???
  2677.         Return: CF clear
  2678.     AX = 1406h ???
  2679.         ???
  2680.         Return: CF clear
  2681.             ???
  2682.     AX = 1407h ???
  2683.         ???
  2684.         Return: CF clear
  2685.             ???
  2686.     AX = 1408h ???
  2687.         ???
  2688.         Return: CF clear
  2689.             ???
  2690.     AX = 1409h ???
  2691.         ???
  2692.         Return: CF clear
  2693.             ???
  2694.     AX = 140Ah ???
  2695.         BX = ???
  2696.         Return: CF clear
  2697.             ???
  2698.     AX = 140Bh ???
  2699.         BX = ???
  2700.         Return: CF clear
  2701.             SI = ???
  2702.     AH = 15h ???
  2703.         ES:BX -> ??? or 0000h:0000h
  2704.         Return: CF clear
  2705.      ---QEMM v5.11+ ---
  2706.     AX = 1600h get memory access status
  2707.         ES:DI -> 256-byte buffer
  2708.         Return: ES:DI buffer filled
  2709.         Note:    each byte of the buffer indicates the status of a 4K
  2710.               page (bit 0 set if read, bit 1 set if written)
  2711.     AX = 1601h set memory access status
  2712.         ES:DI -> 256-byte buffer containing access statuses (see above)
  2713.     AH = 17h get memory usage statistics
  2714.         ES:DI -> 81-byte buffer for memory statistics (see below)
  2715.         Return: CF clear
  2716.     AH = 18h check whether conventional memory mapped into address range
  2717.         ES:BX = starting address
  2718.         CX = number of 4K pages
  2719.         Return: CF clear
  2720.             AL = 00h one or more pages is remapped
  2721.                  01h all pages in range are conventional memory
  2722.                      (physical address == virtual address)
  2723.     AH = 19h NOP
  2724.         Return: CF set
  2725.     AH = 1Ah I/O port access
  2726.         AL = subfunction
  2727.             00h get byte from I/O port
  2728.             Return: BL = port value
  2729.             01h send byte to I/O port
  2730.             BL = value to send
  2731.             02h send byte to I/O port, get byte from following port
  2732.             BH = value to send
  2733.             Return: BL = value read
  2734.             03h send bytes to two consecutive I/O ports
  2735.             BH = value for first I/O port (DX)
  2736.             BL = value for second I/O port (DX+1)
  2737.         DX = port number
  2738.         Return: CF clear
  2739.     AH = 1Bh Windows 3 support???
  2740.         AL = subfunction
  2741.             00h ???
  2742.             ES:DI -> buffer for ???
  2743.             Return: CF set on error
  2744.                 CF clear if successful
  2745.             Data structure:
  2746.             Offset    Size    Description
  2747.              00h    DWORD    ???
  2748.              04h    BYTE    ??? (v6.00 sets to 01h)
  2749.              05h    BYTE    ??? (v6.00 sets to 00h or 0Bh)
  2750.             01h ???
  2751.             Return: CF set on error
  2752.                 CF clear if successful
  2753.             02h ???
  2754.             Return: CF set on error
  2755.                 CF clear if successful
  2756.             03h ???
  2757.             DL = ???
  2758.             DI = ???
  2759.             Return: ???
  2760.             04h ???
  2761.             Return: CF clear
  2762.             05h ???
  2763.             DS:DX -> ASCIZ string (QEMM checks if ends in ".DRV"
  2764.             Return: CF clear
  2765.                 AL = 01h if string ends in ".DRV"
  2766.                    = FFh if string ends in "GDI.EXE"
  2767.                    = 00h otherwise
  2768.             06h ???
  2769.             CX = length of data pointed at by DS:DX
  2770.             DS:DX -> ???
  2771.             Return: CF clear
  2772.             07h BUG: QEMM 6.00 will accept this and branch randomly
  2773.             else Return: CF set
  2774.     AH = 1Ch protected-mode hardware interrupt handlers ???
  2775.         AL = subfunction
  2776.             00h restore IRQ0-7 handlers???
  2777.             01h set IRQ0-7 handlers???
  2778.             ES:DI -> 8 DWORDs containing ???
  2779.             02h restore IRQ8-15 handlers???
  2780.             03h set IRQ8-15 handlers
  2781.             ES:DI -> 8 DWORDs containing ???
  2782.         BUG: although the jump table only contains four entries,
  2783.             QEMM 6.00 will attempt to use it for any value of
  2784.             AL between 00h and 2Ah, thus branching unpredictably
  2785.             for AL=04h-2Ah
  2786.      ---QEMM v6.00+ ---
  2787.     AH = 1Dh ???
  2788.         AL = subfunction
  2789.             00h ???
  2790.             01h ???
  2791.             Note: clears any pending IRQ7 at end of function
  2792.             else
  2793.             Return: CF set
  2794.     AH = 1Eh Stealth information
  2795.         AL = subfunction
  2796.             00h get Stealth configuration
  2797.             Return: BL = flags
  2798.                     bit 0: conventional memory sorted
  2799.                     bit 1: conventional memory filled
  2800.                     bit 2: ???
  2801.                     bit 3: ???
  2802.                     bit 4: expanded memory is in use
  2803.                     bit 5: ???
  2804.                 BH = ??? (always 00h for v6.00)
  2805.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  2806.                 CH = ??? (zero/nonzero important)
  2807.                 DX = ??? (always 0000h for v6.00)
  2808.                 SI = ??? (always 0000h for v6.00)
  2809.                 DI = ??? (always 0000h for v6.00)
  2810.             01h get number of Stealth'ed ROMs
  2811.             Return: CF clear
  2812.                 BX = number of Stealth'ed ROMs
  2813.             02h get Stealth'ed ROM info
  2814.                 ES:DI -> buffer for Stealth ROM info (see below)
  2815.             Return: CF clear
  2816.                 BX = number of Stealth'ed ROMs
  2817.                 ES:DI buffer filled
  2818.             else
  2819.             Return: CF set
  2820.     AH = 1Fh page table (page directory???) manipulation
  2821.         AL = subfunction
  2822.             00h get page table (page directory???) entry
  2823.             CX = entry number
  2824.             Return: EDX = page table/directory entry
  2825.                 CF clear
  2826.             01h set page table (page directory???) entry
  2827.             CX = entry number
  2828.             EDX = page table/directory entry
  2829.             Return: CF clear
  2830.             else
  2831.             Return: CF set
  2832.     AH = 20h asynchronous disk access support???
  2833.         AL = subfunction
  2834.             00h get ???
  2835.             Return: CF clear
  2836.                 BL = flags
  2837.                     bit 7: ??? (set if Stealth active)
  2838.                     bit 0: ???
  2839.             01h set ???
  2840.             BL = ??? (bit 0 only)
  2841.             Return: CF clear
  2842.             else
  2843.             Return: CF set
  2844.     AH = 21h Stealth support
  2845.         AL = subfunction
  2846.             00h copy data from Stealthed address space
  2847.             DS:SI -> start address of hidden memory to copy
  2848.             ES:DI -> buffer for copied data
  2849.             ECX = number of bytes to copy
  2850.             Return: CF clear if successful
  2851.                 CF set on error (DS:SI < C000h:0000h or
  2852.                          DS:SI + ECX > 1M)
  2853.             else
  2854.             Return: CF set
  2855.     other
  2856.         Return: CF set
  2857.  
  2858. Format of QEMM 6.0 memory statistics:
  2859. Offset    Size    Description
  2860.  00h    BYTE    ???
  2861.  01h    DWORD    initial conventional memory in bytes
  2862.  05h    DWORD    initial extended memory in bytes
  2863.  09h    DWORD    ???
  2864.  0Dh    DWORD    initial "top" memory in bytes
  2865.  11h 12 BYTEs    ???
  2866.  1Dh    DWORD    ???
  2867.  21h    DWORD    QEMM code size in bytes
  2868.  25h    DWORD    QEMM data size in bytes
  2869.  29h    DWORD    bytes used for TASKS=
  2870.  2Dh    DWORD    DMA buffer size
  2871.  31h    DWORD    bytes used for MAPS=
  2872.  35h    DWORD    bytes of high RAM???
  2873.  39h    DWORD    bytes used by mapped ROMs
  2874.  3Dh  8 BYTEs    ???
  2875.  45h    DWORD    bytes of expanded memory provided by QEMM
  2876.  49h    DWORD    ???
  2877.  4Dh    DWORD    conventional memory overhead in bytes
  2878.  
  2879. Format of Stealth ROM info [array]:
  2880. Offset    Size    Description
  2881.  00h    WORD    starting segment of ROM
  2882.  02h    WORD    length of ROM in paragraphs
  2883. ----------6740-------------------------------
  2884. INT 67 - LIM EMS - GET MANAGER STATUS
  2885.     AH = 40h
  2886. Return: AH = status
  2887.         00h successful
  2888.         80h internal error
  2889.         81h hardware malfunction
  2890.         84h undefined function requested by application
  2891. Note:    this call can be used only after establishing that the EMS driver is in
  2892.       fact present
  2893. SeeAlso: AH=3Fh,AX=FFA5h
  2894. ----------6741-------------------------------
  2895. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  2896.     AH = 41h
  2897. Return: AH = 00h function successful
  2898.         BX = segment of page frame
  2899.     AH = error code (see AH=40h)
  2900. SeeAlso: AH=58h,AH=68h
  2901. ----------6742-------------------------------
  2902. INT 67 - LIM EMS - GET NUMBER OF PAGES
  2903.     AH = 42h
  2904. Return: AH = 00h function successful
  2905.         BX = number of unallocated pages
  2906.         DX = total number of pages
  2907.     AH = error code (see AH=40h)
  2908. SeeAlso: INT 2F/AX=2702h
  2909. ----------6743-------------------------------
  2910. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  2911.     AH = 43h
  2912.     BX = number of logical pages to allocate
  2913. Return: AH = status
  2914.         00h function successful
  2915.         DX = handle
  2916.         80h internal error
  2917.         81h hardware malfunction
  2918.         84h undefined function requested
  2919.         85h no more handles available
  2920.         87h more pages requested than physically exist
  2921.         88h more pages requested than currently available
  2922.         89h zero pages requested
  2923. SeeAlso: AH=45h
  2924. ----------6744-------------------------------
  2925. INT 67 - LIM EMS - MAP MEMORY
  2926.     AH = 44h
  2927.     AL = physical page number (0-3)
  2928.     BX = logical page number
  2929.     DX = handle
  2930. Return: AH = status
  2931.         00h function successful
  2932.         80h internal error
  2933.         81h hardware malfunction
  2934.         83h invalid handle
  2935.         84h undefined function requested
  2936.         8Ah invalid logical page number
  2937.         8Bh illegal physical-page number
  2938. SeeAlso: AH=69h
  2939. ----------6745-------------------------------
  2940. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  2941.     AH = 45h
  2942.     DX = EMM handle
  2943. Return: AH = status
  2944.         00h successful
  2945.         80h internal error
  2946.         81h hardware malfunction
  2947.         83h invalid handle
  2948.         84h undefined function requested
  2949.         86h error in save or restore of mapping context
  2950. SeeAlso: AH=43h
  2951. ----------6746-------------------------------
  2952. INT 67 - LIM EMS - GET EMM VERSION
  2953.     AH = 46h
  2954. Return: AH = status
  2955.         00h successful
  2956.         AL = EMM version number
  2957.         80h internal error
  2958.         81h hardware malfunction
  2959.         84h undefined function requested
  2960. ----------6747-------------------------------
  2961. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  2962.     AH = 47h
  2963.     DX = handle
  2964. Return: AH = status
  2965.         00h successful
  2966.         80h internal error
  2967.         81h hardware malfunction
  2968.         83h invalid handle
  2969.         84h undefined function requested
  2970.         8Ch page-mapping hardware state save area is full
  2971.         8Dh save of mapping context failed
  2972. SeeAlso: AH=48h
  2973. ----------6748-------------------------------
  2974. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  2975.     AH = 48h
  2976.     DX = handle
  2977. Return: AH = status
  2978.         00h successful
  2979.         80h internal error
  2980.         81h hardware malfunction
  2981.         83h invalid handle
  2982.         84h undefined function requested
  2983.         8Eh restore of mapping context failed
  2984. SeeAlso: AH=47h
  2985. ----------6749-------------------------------
  2986. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  2987.     AH = 49h
  2988. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2989. ----------674A-------------------------------
  2990. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  2991.     AH = 4Ah
  2992. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2993. ----------674B-------------------------------
  2994. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  2995.     AH = 4Bh
  2996. Return: AH = status
  2997.         00h successful
  2998.         BX = number of EMM handles
  2999.         80h internal error
  3000.         81h hardware malfunction
  3001.         83h invalid handle
  3002.         84h undefined function requested
  3003. ----------674C-------------------------------
  3004. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  3005.     AH = 4Ch
  3006.     DX = EMM handle
  3007. Return: AH = status
  3008.         00h successful
  3009.         BX = number of logical pages
  3010.         80h internal error
  3011.         81h hardware malfunction
  3012.         83h invalid handle
  3013.         84h undefined function requested
  3014. SeeAlso: AH=4Dh
  3015. ----------674D-------------------------------
  3016. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  3017.     AH = 4Dh
  3018.     ES:DI -> array to receive information
  3019. Return: AH = status
  3020.         00h successful
  3021.         BX = number of active EMM handles
  3022.         array filled with 2-word entries, consisting of a handle
  3023.           and the number of pages allocated to that handle
  3024.         80h internal error
  3025.         81h hardware malfunction
  3026.         84h undefined function requested
  3027. SeeAlso: AH=4Ch
  3028. ----------674E-------------------------------
  3029. INT 67 - LIM EMS - GET OR SET PAGE MAP
  3030.     AH = 4Eh
  3031.     AL = 00h if getting mapping registers
  3032.          01h if setting mapping registers
  3033.          02h if getting and setting mapping registers at once
  3034.          03h if getting size of page-mapping array
  3035.     DS:SI -> array holding information (AL=01/02)
  3036.     ES:DI -> array to receive information (AL=00/02)
  3037. Return: AH = status
  3038.         00h successful
  3039.         AL = bytes in page-mapping array (AL=03h only)
  3040.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  3041.         80h internal error
  3042.         81h hardware malfunction
  3043.         84h undefined function requested
  3044.         8Fh undefined subfunction parameter
  3045.         A3h contents of source array corrupted (EMS 4.0?)
  3046. Note:    this function was designed to be used by multitasking operating systems
  3047.       and should not ordinarily be used by appplication software.
  3048. SeeAlso: AH=4Fh
  3049. ----------674F-------------------------------
  3050. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  3051.     AH = 4Fh
  3052.     AL = subfunction
  3053.         00h get partial page map
  3054.            DS:SI -> structure containing list of segments whose mapping
  3055.             contexts are to be saved
  3056.            ES:DI -> array to receive page map
  3057.         01h set partial page map
  3058.            DS:SI -> structure containing saved partial page map
  3059.         02h get size of partial page map
  3060.            BX = number of mappable segments in the partial map to be saved
  3061. Return: AH = status
  3062.         00h successful
  3063.         80h internal error
  3064.         81h hardware malfunction
  3065.         84h undefined function requested
  3066.         8Bh one of specified segments is not mappable
  3067.         8Fh undefined subfunction parameter
  3068.         A3h contents of partial page map corrupted or count of mappable
  3069.         segments exceeds total number of mappable segments in system
  3070.     AL = size of partial page map for subfunction 02h
  3071. SeeAlso: AH=4Eh
  3072. ----------6750-------------------------------
  3073. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  3074.     AH = 50h
  3075.     AL = subfunction
  3076.         00h use physical page numbers
  3077.         01h use segment addresses
  3078.     DX = handle
  3079.     CX = number of entries in array
  3080.     DS:SI -> mapping array (see below)
  3081. Return: AH = status
  3082.         00h successful
  3083.         80h internal error
  3084.         81h hardware malfunction
  3085.         83h invalid handle
  3086.         84h undefined function requested
  3087.         8Ah one or more logical pages are invalid
  3088.         8Bh one or more physical pages are invalid
  3089.         8Fh invalid subfunction
  3090. SeeAlso: AH=40h
  3091.  
  3092. Format of mapping array entry:
  3093. Offset    Size    Description
  3094.  00h    WORD    logical page number or FFFFh to unmap physical page
  3095.  02h    WORD    physical page number or segment address
  3096. ----------6751-------------------------------
  3097. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  3098.     AH = 51h
  3099.     DX = handle
  3100.     BX = number of pages to be allocated to handle
  3101. Return: BX = actual number of pages allocated to handle
  3102.     AH = status
  3103.         00h successful
  3104.         80h internal error
  3105.         81h hardware malfunction
  3106.         83h invalid handle
  3107.         84h undefined function requested
  3108.         87h more pages requested than present in system
  3109.         88h more pages requested than currently available
  3110. ----------6752-------------------------------
  3111. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  3112.     AH = 52h
  3113.     AL = subfunction
  3114.         00h get handle attributes
  3115.         Return: AL = attribute
  3116.                 00h handle is volatile
  3117.                 01h handle is nonvolatile
  3118.         01h set handle attributes
  3119.         BL = new attribute (see returned AL)
  3120.         02h get attribute capability
  3121.         Return: AL = attribute capability
  3122.                 00h only volatile handles supported
  3123.                 01h both volatile and non-volatile supported
  3124.     DX = handle
  3125. Return:    AH = status
  3126.         00h successful
  3127.         80h internal error
  3128.         81h hardware malfunction
  3129.         83h invalid handle
  3130.         84h undefined function requested
  3131.         8Fh undefined subfunction
  3132.         90h undefined attribute type
  3133.         91h feature not supported
  3134. SeeAlso: AH=53h
  3135. ----------6753-------------------------------
  3136. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  3137.     AH = 53h
  3138.     AL = subfunction
  3139.         00h get handle name
  3140.            ES:DI -> 8-byte handle name array
  3141.         01h set handle name
  3142.            DS:SI -> 8-byte handle name
  3143.     DX = handle
  3144. Return: AH = status
  3145.         00h successful
  3146.         80h internal error
  3147.         81h hardware malfunction
  3148.         83h invalid handle
  3149.         84h undefined function requested
  3150.         8Fh undefined subfunction
  3151.         A1h duplicate handle name
  3152. SeeAlso: AH=52h
  3153. ----------6754-------------------------------
  3154. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  3155.     AH = 54h
  3156.     AL = subfunction
  3157.         00h get handle directory
  3158.            ES:DI -> buffer for handle directory (see below)
  3159.         01h search for named handle
  3160.            DS:SI -> 8-byte name
  3161.         02h get total number of handles
  3162. Return: AL = number of entries in handle directory (subfunction 00h)
  3163.     DX = value of named handle (subfunction 01h)
  3164.     BX = total number of handles (subfunction 02h)
  3165.     AH = status
  3166.         00h successful
  3167.         80h internal error
  3168.         81h hardware malfunction
  3169.         84h undefined function requested
  3170.         8Fh undefined subfunction
  3171.         A0h no such handle name
  3172.         A1h a handle found had no name
  3173.  
  3174. Format of handle directory entry:
  3175. Offset    Size    Description
  3176.  00h    WORD    handle
  3177.  02h  8 BYTEs    handle's name
  3178. ----------6755-------------------------------
  3179. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  3180.     AH = 55h
  3181.     AL = subfunction
  3182.         00h physical page numbers provided by caller
  3183.         01h segment addresses provided by caller
  3184.     DX = handle
  3185.     DS:SI -> structure containing map and jump address
  3186. Return: (at target address unless error)
  3187.     AH = status
  3188.         00h successful
  3189.         80h internal error
  3190.         81h hardware failure
  3191.         83h invalid handle
  3192.         84h undefined function requested
  3193.         8Ah invalid logical page number encountered
  3194.         8Bh invalid physical page number encountered
  3195.         8Fh invalid subfunction
  3196. SeeAlso: AH=56h
  3197. ----------6756-------------------------------
  3198. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  3199.     AH = 56h
  3200.     AL = subfunction
  3201.         00h physical page numbers provided by caller
  3202.         DX = handle
  3203.         DS:SI -> structure containing page map and call address
  3204.         01h segment addresses provided by caller
  3205.         DX = handle
  3206.         DS:SI -> structure containing page map and call address
  3207.         02h get page map stack space required
  3208.         Return: BX = stack space required
  3209. Return: (if successful, the target address is called.  Use a RETF to return and
  3210.      restore mapping context)
  3211.     AH = status (see AH=55h)
  3212. SeeAlso: AH=55h
  3213. ----------6757-------------------------------
  3214. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  3215.     AH = 57h
  3216.     AL = subfunction
  3217.         00h move memory region
  3218.         01h exchange memory region
  3219.     DS:SI -> structure describing source and destination (see below)
  3220. Return: AH = status
  3221.         00h successful
  3222.         80h internal error
  3223.         81h hardware failure
  3224.         83h invalid handle
  3225.         84h undefined function requested
  3226.         8Ah invalid logical page number encountered
  3227.         8Fh undefined subfunction
  3228.         92h successful, but a portion of the source region has been
  3229.         overwritten
  3230.         93h length of source or destination region exceeds length of region
  3231.         allocated to either source or destination handle
  3232.         94h conventional and expanded memory regions overlap
  3233.         95h offset within logical page exceeds size of logical page
  3234.         96h region length exceeds 1M
  3235.         97h source and destination EMS regions have same handle and overlap
  3236.         98h memory source or destination type undefined
  3237.         A2h attempted to wrap around 1M conventional address space
  3238. Note:    source and destination may overlap for a move, in which case the copy
  3239.       direction is chosen such that the destination receives an intact copy
  3240.       of the source region
  3241.  
  3242. Format of EMS copy data:
  3243. Offset    Size    Description
  3244.  00h    DWORD    region length in bytes
  3245.  04h    BYTE    source memory type
  3246.         00h conventional
  3247.         01h expanded
  3248.  05h    WORD    source handle (0000h if conventional memory)
  3249.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  3250.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  3251.  0Bh    BYTE    destination memory type
  3252.         00h conventional
  3253.         01h expanded
  3254.  0Ch    WORD    destination handle
  3255.  0Eh    WORD    destination initial offset
  3256.  10h    WORD    destination initial segment or page
  3257. ----------6758-------------------------------
  3258. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  3259.     AH = 58h
  3260.     AL = subfunction
  3261.         00h get mappable physical address array
  3262.         ES:DI -> buffer to be filled with array
  3263.         01h get number of entries in m.p.a. array
  3264. Return: CX = number of entries in array
  3265.     AH = status
  3266.         00h successful
  3267.         80h internal error
  3268.         81h hardware failure
  3269.         84h undefined function requested
  3270.         8Fh undefined subfunction
  3271. Note:    the returned array for subfunction 00h is filled in physical segment
  3272.       address order
  3273.  
  3274. Format of mappable physical address entry:
  3275. Offset    Size    Description
  3276.  00h    WORD    physical page segment
  3277.  02h    WORD    physical page number
  3278. ----------6759-------------------------------
  3279. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  3280.     AH = 59h
  3281.     AL = subfunction
  3282.         00h get hardware configuration array
  3283.         ES:DI -> buffer to be filled with array (see below)
  3284.         01h get unallocated raw page count
  3285.         Return: BX = unallocated raw pages
  3286.             DX = total raw pages
  3287. Return:    AH = status
  3288.         00h successful
  3289.         80h internal error
  3290.         81h hardware failure
  3291.         84h undefined function requested
  3292.         8Fh undefined subfunction
  3293.         A4h access denied by operating system
  3294. Note:    subfunction 00h is for use by operating systems only, and can be
  3295.       enabled or disabled at any time by the operating system
  3296.  
  3297. Format of hardware configuration array:
  3298. Offset    Size    Description
  3299.  00h    WORD    size of raw EMM pages in paragraphs
  3300.  02h    WORD    number of alternate register sets
  3301.  04h    WORD    size of mapping-context save area in bytes
  3302.  06h    WORD    number of register sets assignable to DMA
  3303.  08h    WORD    DMA operation type
  3304.         0000h DMA with alternate register sets
  3305.         0001h only one DMA register set
  3306. ----------675A-------------------------------
  3307. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  3308.     AH = 5Ah
  3309.     AL = subfunction
  3310.         00h allocate standard pages
  3311.         01h allocate raw pages
  3312.     BX = number of pages to allocate
  3313. Return: DX = handle
  3314.     AH = status
  3315.         00h successful
  3316.         80h internal error
  3317.         81h hardware failure
  3318.         84h undefined function requested
  3319.         85h no more handles available
  3320.         87h insufficient memory pages in system
  3321.         88h insufficient memory pages available
  3322.         8Fh undefined subfunction
  3323. ----------675B-------------------------------
  3324. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  3325.     AH = 5Bh
  3326.     AL = subfunction
  3327.         00h get alternate map register set
  3328.         Return: BL = current active alternate map register set number
  3329.             ES:DI -> map register context save area if BL=00h
  3330.         01h set alternate map register set
  3331.         BL = new alternate map register set number
  3332.         ES:DI -> map register context save area if BL=0
  3333.         02h get alternate map save array size
  3334.         Return: DX = array size in bytes
  3335.         03h allocate alternate map register set
  3336.         Return: BL = number of map register set; 00h = not supported
  3337.         04h deallocate alternate map register set
  3338.         BL = number of alternate map register set
  3339. Return: AH = status
  3340.         00h successful
  3341.         80h internal error
  3342.         81h hardware malfunction
  3343.         84h undefined function requested
  3344.         8Fh undefined subfunction
  3345.         9Ah specified alternate map register set not supported
  3346.         9Bh all alternate map register sets currently allocated
  3347.         9Ch alternate map register sets not supported
  3348.         9Dh undefined or unallocated alternate map register set
  3349.         A3h source array corrupted
  3350.         A4h operating system denied access
  3351. Note:    this function is for use by operating systems only, and can be
  3352.       enabled or disabled at any time by the operating system
  3353. ----------675B-------------------------------
  3354. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  3355.     AH = 5Bh
  3356.     AL = subfunction
  3357.         05h allocate DMA register set
  3358.         Return: BL = DMA register set number, 00h if not supported
  3359.         06h enable DMA on alternate map register set
  3360.            BL = DMA register set number
  3361.            DL = DMA channel number
  3362.         07h disable DMA on alternate map register set
  3363.            BL = DMA register set number
  3364.         08h deallocate DMA register set
  3365.            BL = DMA register set number
  3366. Return: AH = status
  3367.         00h successful
  3368.         80h internal error
  3369.         81h hardware malfunction
  3370.         84h undefined function requested
  3371.         8Fh undefined subfunction
  3372.         9Ah specified DMA register set not supported
  3373.         9Bh all DMA register sets currently allocated
  3374.         9Ch alternate DMA sets not supported
  3375.         9Dh undefined or unallocated DMA register set
  3376.         9Eh dedicated DMA channels not supported
  3377.         9Fh specified dedicated DMA channel not supported
  3378.         A3h source array corrupted
  3379.         A4h operating system denied access
  3380. Note:    this function is for use by operating systems only, and can be
  3381.       enabled or disabled at any time by the operating system
  3382. ----------675BE0-----------------------------
  3383. INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
  3384.     AX = 5BE0h
  3385.     ES:BX -> memory for which to get linear address
  3386. Return: AH = 00h
  3387.     DX:CX = linear address of physical memory corresponding to ES:BX
  3388. SeeAlso: AX=5BF0h,AX=5BF1h
  3389. ----------675BF0-----------------------------
  3390. INT 67 - MICEMM v4D - INSTALLATION CHECK
  3391.     AX = 5BF0h
  3392. Return: AH = 00h if MICEMM present
  3393.         BX = code segment of driver
  3394. Note:    MICEMM is the Micronics Expanded Memory Manager
  3395. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  3396. ----------675BF1-----------------------------
  3397. INT 67 - MICEMM v4D - GET MEMORY TYPES
  3398.     AX = 5BF1h
  3399.     ES:BX -> 256-byte buffer for memory types
  3400. Return: AH = 00h
  3401.     ES:BX buffer filled
  3402. Note:    each byte in the buffer specifies the type of a 4K page of memory:
  3403.         00h unused
  3404.         02h DOS extension
  3405.         04h shadowed ROM
  3406.         08h mappable EMS
  3407.         10h page frame
  3408.         20h ROM
  3409.         40h reserved (video memory, etc)
  3410.         80h RAM
  3411. SeeAlso: AX=5BE0h,AX=5BF0h
  3412. ----------675C-------------------------------
  3413. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  3414.     AH = 5Ch
  3415. Return: AH = status
  3416.         00h successful
  3417.         80h internal error
  3418.         81h hardware malfunction
  3419.         84h undefined function requested
  3420. ----------675D-------------------------------
  3421. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  3422.     AH = 5Dh
  3423.     AL = subfunction
  3424.         00h enable OS Function Set
  3425.         01h disable OS Function Set
  3426.         02h return access key (resets memory manager, returns access key at
  3427.         next invocation)
  3428.     BX,CX = access key returned by first invocation
  3429. Return: BX,CX = access key, returned only on first invocation of function
  3430.     AH = status
  3431.         00h successful
  3432.         80h internal error
  3433.         81h hardware malfunction
  3434.         84h undefined function requested
  3435.         8Fh undefined subfunction
  3436.         A4h operating system denied access
  3437. ----------6760-------------------------------
  3438. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  3439.     AH = 60h
  3440.     ES:DI -> buffer
  3441. Return: AH = status
  3442.     AL = number of entries
  3443.     buffer at ES:DI filled
  3444. ----------6761-------------------------------
  3445. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  3446.     AH = 61h
  3447.     ???
  3448. Return: ???
  3449. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  3450.       ensuring that the cache accurately reflects what the processor would
  3451.       see without the cache.
  3452. ----------6768-------------------------------
  3453. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  3454.     AH = 68h
  3455.     ES:DI -> buffer
  3456. Return: AH = status
  3457.     AL = number of entries
  3458.     buffer at ES:DI filled
  3459. Note:    equivalent to LIM 4.0 function 58h
  3460. ----------6769-------------------------------
  3461. INT 67 - EEMS - MAP PAGE INTO FRAME
  3462.     AH = 69h
  3463.     AL = frame number
  3464.     BX = page number
  3465.     DX = handle
  3466. Return: AH = status
  3467. Note:    similar to EMS function 44h
  3468. SeeAlso: AH=44h,AH=50h,AH=6Ah
  3469. ----------676A-------------------------------
  3470. INT 67 - EEMS - PAGE MAPPING
  3471.     AH = 6Ah
  3472.     AL = subfunction
  3473.         00h save partial page map
  3474.         CH = first page frame
  3475.         CL = number of frames
  3476.         ES:DI -> buffer which is to be filled
  3477.         01h restore partial page map
  3478.         CH = first page frame
  3479.         CL = number of frames
  3480.         DI:SI -> previously saved page map
  3481.         02h save and restore partial page map
  3482.         CH = first page frame
  3483.         CL = number of frames
  3484.         ES:DI = buffer for current page map
  3485.         DI:SI = new page map
  3486.         03h get size of save array
  3487.         CH = first page frame
  3488.         CL = number of frames
  3489.         Return: AL = size of array in bytes
  3490.         04h switch to standard map register setting
  3491.         05h switch to alternate map register setting
  3492.         06h deallocate pages mapped to frames in conventional memory
  3493.         CH = first page frame
  3494.         CL = number of frames
  3495. Return: AH = status
  3496. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  3497.       specified
  3498. SeeAlso: AH=69h
  3499. ----------67DD-------------------------------
  3500. INT 67 - Quadtel QMAPS - API
  3501.     AH = DDh
  3502.     AL = function
  3503.     ???
  3504. Return: ???
  3505. Notes:    details are not yet available
  3506.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  3507.       supports this API
  3508. SeeAlso: AH=3Fh,AX=FFA5h
  3509. ----------67DE00-----------------------------
  3510. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  3511.     AX = DE00h
  3512. Return: AH = 00h    VCPI is present
  3513.         BH = major version number
  3514.         BL = minor version number
  3515.     AH nonzero  VCPI not present
  3516. ----------67DE01-----------------------------
  3517. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  3518.     AX = DE01h
  3519.     ES:DI -> 4K page table buffer
  3520.     DS:SI -> three descriptor table entries in GDT
  3521.         first becomes code segment descriptor, other two for use by
  3522.         main control program
  3523. Return: AH = 00h successful
  3524.         DI -> first unused page table entry in buffer
  3525.         EBX -> protected mode entry point in code segment
  3526.     AH = nonzero  failed
  3527. ----------67DE02-----------------------------
  3528. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  3529.     AX = DE02h
  3530. Return: AH = 00h  successful
  3531.         EDX = physical address of highest 4K memory page
  3532.     AH nonzero: failed
  3533. ----------67DE03-----------------------------
  3534. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  3535.     AX = DE03h
  3536. Return: AH = 00h  successful
  3537.         EDX = number of free 4K pages
  3538.     AH nonzero: failed
  3539. Notes:    returns total number of pages available to ALL tasks in system
  3540.     also available in protected mode by calling the protected-mode VCPI
  3541.       entry point
  3542. SeeAlso: AX=DE04h
  3543. ----------67DE04-----------------------------
  3544. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  3545.     AX = DE04h
  3546. Return: AH = 00h successful
  3547.         EDX = physical address of allocated page
  3548.     AH nonzero: failed
  3549. Notes:    the client program is responsible for freeing all memory allocated
  3550.       with this call before terminating
  3551.     also available in protected mode by calling the protected-mode VCPI
  3552.       entry point
  3553. SeeAlso: AX=DE03h,AX=DE05h
  3554. ----------67DE05-----------------------------
  3555. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  3556.     AX = DE05h
  3557.     EDX = physical address of 4K page
  3558. Return: AH = 00h successful
  3559.     AH nonzero: failed
  3560. Note:    also available in protected mode by calling the protected-mode VCPI
  3561.       entry point
  3562. SeeAlso: AX=DE04h
  3563. ----------67DE06-----------------------------
  3564. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  3565.     AX = DE06h
  3566.     CX = page number (linear address shifted right 12 bits)
  3567. Return: AH = 00h successful
  3568.         EDX = physical address of page
  3569.     AH nonzero: invalid page number (AH = 8Bh recommended)
  3570. ----------67DE07-----------------------------
  3571. INT 67 - Virtual Control Program Interface - READ CR0
  3572.     AX = DE07h
  3573. Return: AH = 00h
  3574.     EBX = value of Control Register 0
  3575. SeeAlso: AX=DE07h
  3576. ----------67DE08-----------------------------
  3577. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  3578.     AX = DE08h
  3579.     ES:DI -> array of 8 DWORDs
  3580. Return: AH = 00h
  3581.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  3582. SeeAlso: AX=DE09h
  3583. ----------67DE09-----------------------------
  3584. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  3585.     AX = DE09h
  3586.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  3587. Return: AH = 00h
  3588. Note:    values for DR4 and DR5 ignored
  3589. SeeAlso: AX=DE08h
  3590. ----------67DE0A-----------------------------
  3591. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  3592.     AX = DE0Ah
  3593. Return: AH = 00h successful
  3594.         BX = first vector used by master 8259 (IRQ0)
  3595.         CX = first vector used by slave 8259 (IRQ8)
  3596.     AH nonzero: failed
  3597. Note:    CX is undefined in systems without a slave 8259
  3598. SeeAlso: AX=DE0Bh
  3599. ----------67DE0B-----------------------------
  3600. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  3601.     AX = DE0Bh
  3602.     BX = first vector used by master 8259
  3603.     CX = first vector used by slave 8259
  3604.     interrupts disabled
  3605. Return: AH = 00h successful
  3606.     AH nonzero: failed 
  3607. Notes:    This call merely informs the server that the client has changed the
  3608.       interrupt mappings.  The client may not change the mappings if they
  3609.       have already been changed by the server or another client, and is
  3610.       responsible for restoring the original mappings before terminating.
  3611. SeeAlso: AX=DE0Ah
  3612. ----------67DE0C-----------------------------
  3613. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  3614.     AX = DE0Ch
  3615.     ESI = linear address in first megabyte of values for system registers
  3616.     interrupts disabled
  3617. Return: interrupts disabled
  3618.     GDTR, IDTR, LDTR, TR loaded
  3619.     SS:ESP must have at least 16 bytes space, and the entry point is
  3620.         required to set up a new stack before enabling interrupts
  3621.     EAX, ESI, DS, ES, FS, GS destroyed
  3622. SeeAlso: INT 15/AH=89h
  3623.  
  3624. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  3625.       AX = DE0Ch
  3626.       DS = segment selector from function DE01h
  3627.       SS:ESP in first megabyte of linear memory
  3628.       STACK:QWORD  return address from FAR call to 32-bit segment
  3629.         DWORD  EIP
  3630.         DWORD  CS
  3631.         DWORD  reserved for EFLAGS
  3632.         DWORD  ESP
  3633.         DWORD  SS
  3634.         DWORD  ES
  3635.         DWORD  DS
  3636.         DWORD  FS
  3637.         DWORD  GS
  3638.       and interrupts disabled, will switch to virtual86 mode with
  3639.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  3640.  
  3641. Format of system register values for switch to protected mode:
  3642. Offset    Size    Description
  3643.  00h    DWORD    value for CR3
  3644.  04h    DWORD    linear address in first megabyte of value for GDTR
  3645.  08h    DWORD    linear address in first megabyte of value for IDTR
  3646.  0Ch    WORD    value for LDTR
  3647.  0Eh    WORD    value for TR
  3648.  10h    PWORD    CS:EIP of protected mode entry-point
  3649. ----------67FFA5-----------------------------
  3650. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  3651.     AX = FFA5h
  3652. Return: AX = 845Ah if loaded
  3653.         BX:CX -> API entry point
  3654. Notes:    this call is available even if EMM386 is not providing EMS
  3655.     if no other program has hooked INT 67, an alternate installation
  3656.       check is to search for the string
  3657.       "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  3658.       handler's segment, usually at offset 14h
  3659. SeeAlso: AH=3Fh
  3660.  
  3661. Call API entry point with:
  3662.     AH = 00h get memory manager's status
  3663.         Return: AH = status
  3664.                 bit 0: not active (OFF)
  3665.             bit 1: in "Auto" mode
  3666.     AH = 01h set memory manager's state
  3667.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  3668.     AH = 02h Weitek coprocessor support
  3669.         AL = subfunction
  3670.         00h get Weitek support state
  3671.             Return: AL = status
  3672.                     bit 0: Weitek coprocessor is present
  3673.                 bit 1: Weitek support is enabled
  3674.         01h turn on Weitek support
  3675.         02h turn off Weitek support
  3676.      --- v4.20-4.41 only ---
  3677.     AH = 03h Windows support???
  3678.         AL = subfunction (00h, 01h)
  3679.     AH = 04h print copyright notice to standard output
  3680.          (using INT 21/AH=09h)
  3681.     AH = 05h print available report
  3682.          (the one shown when running EMM386 from the DOS prompt)
  3683. ----------68---------------------------------
  3684. INT 68 - Sangoma CCPOP 3270 resident module
  3685. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  3686. ----------6801-------------------------------
  3687. INT 68 - APPC/PC - NETWORK DEVICE CONTROL
  3688.     AH = 01h
  3689.     DS:DX -> control block
  3690.  
  3691. Format of control block:
  3692. Offset    Size    Description
  3693.  00h 12 BYTEs    reserved
  3694.  0Ch    WORD    verb (action)
  3695.  0Eh  6 BYTEs    00h
  3696.  14h    DWORD    (high byte first) return code (see below)
  3697. ---if verb = 1B00h (DISPLAY)---
  3698.  18h    WORD    00h
  3699.  1Ah  8 BYTEs    (high byte first) logical unit ID
  3700.  22h  8 BYTEs    (high byte first) partner logical unit name
  3701.  2Ah  8 BYTEs    (high byte first) mode name
  3702.  32h    BYTE    logical unit session limit
  3703.  33h    BYTE    partner logical unit session limit
  3704.  34h    BYTE    node maximum negotiable session limit
  3705.  35h    BYTE    current session limit
  3706.  36h    BYTE    minimum negotiated winner limit
  3707.  37h    BYTE    maximum negotiated loser limit
  3708.  38h    BYTE    active session count
  3709.  39h    BYTE    active CONWINNER session count
  3710.  3Ah    BYTE    active CONLOSER session count
  3711.  3Bh    BYTE    session termination count
  3712.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  3713.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  3714. ---if verb=2000h (Attach Physical Unit)---
  3715.  18h    WORD    00h
  3716.  1Ah    BYTE    version
  3717.  1Bh    BYTE    release
  3718.  1Ch  8 BYTEs    (high byte first) net name
  3719.  24h  8 BYTEs    (high byte first) physical unit name
  3720.  2Ch  8 BYTEs    00h
  3721.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  3722.  38h    DWORD    00h
  3723.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  3724.         01h RETURN_CONTROL: INCOMPLETE
  3725. ---if verb=2100h (Attach Logical Unit)---
  3726.  18h    WORD    70  offset to partner logical unit record
  3727.  1Ah  8 BYTEs    (high byte first) logical unit name
  3728.  22h  8 BYTEs    (high byte first) logical unit ID
  3729.  2Ah    BYTE    logical unit local address
  3730.  2Bh    BYTE    logical unit session limit
  3731.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  3732.         FFFFFFFFh = reject incoming ALLOCATEs
  3733.         00000000h = queue ALLOCATEs
  3734.  30h    DWORD    00h
  3735.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  3736.  38h    DWORD    00h
  3737.  3Ch    BYTE    maximum TPs
  3738.  3Dh    BYTE    queue depth
  3739.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  3740.  42h    DWORD    00h
  3741.  46h    WORD    total length of partner records
  3742.     for each partner logical unit:
  3743.     WORD    length of this partner logical unit record
  3744.     WORD    42  offset to mode records
  3745.       8 BYTEs    (high byte first) partner logical unit name
  3746.     BYTE    partner logical unit security capabilities
  3747.         bit 7: already verified
  3748.         bit 6: conversation level security
  3749.         bit 5: session level security
  3750.     BYTE    partner logical unit session limit
  3751.     WORD    partner logical unit maximum MC_SEND_LL
  3752.       8 BYTEs    (high byte first) partner logical unit DLC name
  3753.     BYTE    partner logical unit adapter number
  3754.      17 BYTEs    (counted string) partner logical unit adapter address
  3755.     WORD    total length of mode records
  3756.    for each mode:
  3757.     WORD    16  length of this mode record
  3758.       8 BYTEs    (high byte first) mode name
  3759.     WORD    RU_SIZE high bound
  3760.     WORD    RU_SIZE low bound
  3761.     BYTE    mode maximum negotiable session limit
  3762.     BYTE    pacing size for receive
  3763. ---if verb=2200h (Detach Logical Unit)---
  3764.  18h  8 BYTEs    (high byte first) logical unit ID
  3765.  20h    BYTE    00h
  3766. ---if verb=2700h (Detach Physical Unit)---
  3767.  18h    BYTE    00h  type: hard
  3768.         01h  type: soft
  3769. ---if verb=2B00h (Activate DLC)---
  3770.  18h  8 BYTEs    (high byte first) DLC name
  3771.  20h    BYTE    adapter number
  3772.  
  3773. Values for return code:
  3774.      0000h    successful
  3775.      0001h    BAD_TP_ID
  3776.      0002h    BAD_CONV_ID
  3777.      0003h    bad logical unit ID
  3778.      0008h    no physical unit attached
  3779.      0110h    bad state
  3780.      01B1h    BAD_PART_LUNAME
  3781.      01B2h    bad mode name
  3782.      0201h    physical unit already active
  3783.      0211h    logical unit already active
  3784.      0212h    BAD_PART_SESS
  3785.      0213h    BAD_RU_SIZES
  3786.      0214h    BAD_MODE_SESS
  3787.      0216h    BAD_PACING_CNT
  3788.      0219h    EXTREME_RUS
  3789.      021Ah    SNASVCMG_1
  3790.      0223h    SSCP_CONNECTED_LU
  3791.      0230h    invalid change
  3792.      0243h    too many TPs
  3793.      0272h    adapter close failure
  3794.      0281h    GET_ALLOC_BAD_TYPE
  3795.      0282h    unsuccessful
  3796.      0283h    DLC failure
  3797.      0284h    unrecognized DLC
  3798.      0286h    duplicate DLC
  3799.      0301h    SSCP_PU_SESSION_NOT_ACTIVE
  3800.      0302h    data exceeds RU size
  3801.      0401h    invalid direction
  3802.      0402h    invalid type
  3803.      0403h    segment overlap
  3804.      0404h    invalid first character
  3805.      0405h    table error
  3806.      0406h    conversion error
  3807.      F0010000h    APPC disabled
  3808.      F0020000h    APPC busy
  3809.      F0030000h    APPC abended
  3810.      F0040000h    incomplete
  3811.  
  3812. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  3813. pointers are called by pushing the DWORD pointer to the verb on the stack and
  3814. then performing a FAR call.
  3815.  
  3816. Format of ACCESS_LU_LU_PW verb:
  3817. Offset    Size    Description
  3818.  00h 12 BYTEs    reserved
  3819.  0Ch    WORD    1900h
  3820.  0Eh  8 BYTEs    (high byte first) logical unit ID
  3821.  16h  8 BYTEs    (high byte first) logical unit name
  3822.  1Eh  8 BYTEs    (high byte first) partner logical unit name
  3823.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  3824.  37h    BYTE    password available (0=no, 1=yes)
  3825.  38h  8 BYTEs    password
  3826.  
  3827. Format of CREATE_TP verb:
  3828. Offset    Size    Description
  3829.  00h 12 BYTEs    reserved
  3830.  0Ch    WORD    2300h
  3831.  0Eh  6 BYTEs    00h
  3832.  14h    DWORD    (high byte first) sense code
  3833.         00000000h    Ok
  3834.         080F6051h    SECURITY_NOT_VALID
  3835.         084B6031h    TP_NOT_AVAIL_RETRY
  3836.         084C0000h    TP_NOT_AVAIL_NO_RETRY
  3837.         10086021h    TP_NAME_NOT_RECOGNIZED
  3838.         10086034h    CONVERSATION_TYPE_MISMATCH
  3839.         10086041h    SYNC_LEVEL_NOT_SUPPORTED
  3840.  18h  8 BYTEs    (high byte first) TP ID
  3841.  20h  8 BYTEs    (high byte first) logical unit ID
  3842.  28h    DWORD    (high byte first) conversation ID
  3843.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  3844.  2Dh    BYTE    0 no sync level, 1 confirm
  3845.  2Eh    BYTE    reserved
  3846.  2Fh 65 BYTEs    (counted string) transaction program name
  3847.  70h  6 BYTEs    00h
  3848.  76h    WORD    length of ERROR_LOG_DATA to return
  3849.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  3850.  7Ch  8 BYTEs    (high byte first) partner logical unit name
  3851.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  3852.  96h  8 BYTEs    (high byte first) mode name
  3853.  9Eh 12 BYTEs    00h
  3854.  AAh 11 BYTEs    (counted string) password
  3855.  B5h 11 BYTEs    (counted string) user ID
  3856.  C0h    BYTE    0 verification should be performed
  3857.         1 already verified
  3858.  
  3859. Format of SYSLOG verb:
  3860. Offset    Size    Description
  3861.  00h 12 BYTEs    reserved
  3862.  0Ch    WORD    2600h
  3863.  0Eh 10 BYTEs    00h
  3864.  18h    WORD    (high byte first) type
  3865.  1Ah    DWORD    (high byte first) subtype
  3866.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  3867.  22h    DWORD    (high byte first) conversation ID
  3868.  26h  8 BYTEs    (high byte first) TP ID
  3869.  2Eh  8 BYTEs    (high byte first) physical unit or logical unit name
  3870.  36h    WORD    length of data
  3871.  38h    DWORD    pointer to data
  3872.  3Ch    BYTE    00h
  3873. ----------6802-------------------------------
  3874. INT 68 - APPC/PC - CONNECTION CONTROL
  3875.     AH = 02h
  3876.     DS:DX -> control block
  3877.  
  3878. Format of control block:
  3879. Offset    Size    Description
  3880.  00h 12 BYTEs    reserved
  3881.  0Ch    WORD    verb (action)
  3882.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  3883.         0 if basic verb
  3884.  0Fh  5 BYTEs    reserved (0)
  3885.  14h    WORD    (high byte first) primary return code (see below)
  3886.  16h    DWORD    (high byte first) error code (see below)
  3887.  1Ah  8 BYTEs    (high byte first) TP_ID
  3888.  22h    DWORD    (high byte first) conversation ID
  3889. ---if verb=0100h (Allocate or MC_Allocate)---
  3890.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  3891.                    1 mapped conversation
  3892.  27h    BYTE    00h SYNC_LEVEL = none
  3893.         01h SYNC_LEVEL = confirm
  3894.  28h    WORD    0000h
  3895.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  3896.         01h RETURN_CONTROL: immediate
  3897.         02h RETURN_CONTROL: when session free
  3898.  2Bh  8 BYTEs    00h
  3899.  33h  8 BYTEs    (high byte first) partner logical unit name
  3900.  3Bh  8 BYTEs    (high byte first) mode name
  3901.  43h 65 BYTEs    (counted string) TP name
  3902.  84h    BYTE    00h security: none
  3903.         01h security: same
  3904.         02h security: pgm
  3905.  85h 11 BYTEs    00h
  3906.  90h 11 BYTEs    (counted string) password
  3907.  9Bh 11 BYTEs    (counted string) user ID
  3908.  A6h    WORD    PIP_DATA length
  3909.  A8h    DWORD    pointer to PIP_DATA
  3910. ---if verb=0300h (Confirm or MC_Confirm)---
  3911.  26h    BYTE  request to send received (0=no, 1=yes)
  3912. ---if verb=0400h (Confirmed or MC_Confirmed), no additional fields---
  3913. ---if verb=0500h (Deallocate or MC_Deallocate)---
  3914.  26h    BYTE    00h
  3915.  27h    BYTE    type 0 SYNC_LEVEL
  3916.              1 FLUSH
  3917.              2 ABEND_PROC
  3918.              3 ABEND_SVC
  3919.              4 ABEND_TIMER
  3920.              5 ABEND
  3921.  28h    WORD    (MC_Deallocate only) length of error log data
  3922.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  3923. ---if verb=0600h (Flush or MC_Flush), no additional fields---
  3924. ---if verb=0700h (Get_Attributes or MC_Get_Attributes)---
  3925.  26h  8 BYTEs    (high byte first) logical unit ID
  3926.  2Eh    BYTE    00h
  3927.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  3928.  30h  8 BYTEs    (high byte first) mode name
  3929.  38h  8 BYTEs    (high byte first) own net name
  3930.  40h  8 BYTEs    (high byte first) own logical unit name
  3931.  48h  8 BYTEs    (high byte first) partner logical unit name
  3932.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  3933.  62h    BYTE    00h
  3934.  63h 11 BYTEs    (counted string) user ID
  3935. ---if verb=0800h (Get_Type)---
  3936.  26h    BYTE    type (0=basic conversation, 1=mapped conversation)
  3937. ---if verb=0900h (Post_on_Receipt)---
  3938.  26h    WORD    maximum length
  3939.  28h    BYTE    fill (0=buffer, 1=LL)
  3940. ---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
  3941.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  3942.  27h    BYTE    locks (0=short, 1=long)
  3943. ---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
  3944.  26h    BYTE    what received
  3945.         00h data
  3946.         01h data complete
  3947.         02h data incomplete
  3948.         03h confirm
  3949.         04h confirm send
  3950.         05h confirm deallocate
  3951.         06h send
  3952.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  3953.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3954.  29h    WORD    maximum length
  3955.  2Bh    WORD    data length
  3956.  2Dh    DWORD    pointer to data
  3957. ---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
  3958.  26h    BYTE    what received
  3959.         00h data
  3960.         01h data complete
  3961.         02h data incomplete
  3962.         03h confirm
  3963.         04h confirm send
  3964.         05h confirm deallocate
  3965.         06h send
  3966.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  3967.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3968.  29h    WORD    maximum length
  3969.  2Bh    WORD    data length
  3970.  2Dh    DWORD    pointer to data
  3971. ---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
  3972. ---if verb=0F00h (Send_Data or MC_Send_Data)---
  3973.  26h    BYTE    request to send received (0=no, 1=yes)
  3974.  27h    BYTE    00h
  3975.  28h    WORD    data length
  3976.  2Ah    DWORD    pointer to data
  3977. ---if verb=1000h (Send_Error or MC_Send_Error)---
  3978.  26h    BYTE    request to send received (0=no, 1=yes)
  3979.  27h    BYTE    type (0=program, 1=SVC)
  3980.  28h    DWORD    00h
  3981.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  3982.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  3983. ---if verb=1200h (Test or MC_Test)---
  3984.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  3985.         Note: error code has different interpretations for:
  3986.             0 posted data
  3987.             1 posted not data (primary return code = 0)
  3988.             1 bad TP_ID (primary return code = 1)
  3989. ---if verb=1300h (Wait)---
  3990.  26h    BYTE    number of conversations to wait on
  3991.         Note: error codes have interpretations as for 1200h above
  3992.  
  3993. Values for primary return code:
  3994.  0000h    successful
  3995.  0001h    parameter check
  3996.  0002h    state check
  3997.  0003h    allocation error
  3998.  0005h    deallocate abended
  3999.  0006h    deallocate abended program
  4000.  0007h    deallocate abended SVC
  4001.  0008h    deallocate abended timer
  4002.  0009h    deallocate normal return
  4003.  000Ah    data posting blocked
  4004.  000Bh    posting not active
  4005.  000Ch    PROG_ERROR_NO_TRUNC
  4006.  000Dh    PROG_ERROR_TRUNC
  4007.  000Eh    PROG_ERROR_PURGING
  4008.  000Fh    CONV_FAILURE_RETRY
  4009.  0010h    CONV_FAILURE_NO_RETRY
  4010.  0011h    SVC_ERROR_NO_TRUNC
  4011.  0012h    SVC_ERROR_TRUNC
  4012.  0013h    SVC_ERROR_PURGING
  4013.  0014h    unsuccessful
  4014.  0018h    CNOS partner logical unit reject
  4015.  0019h    conversation type mixed
  4016.  F001h    APPC disabled
  4017.  F002h    APPC busy
  4018.  F003h    APPC abended
  4019.  F004h    incomplete
  4020.  
  4021. Values for error code:
  4022.  0001h bad TP ID
  4023.  0002h bad conversation ID
  4024.  0004h allocation error, no retry
  4025.  0005h allocation error, retry
  4026.  0006h data area crosses segment boundary
  4027.  0010h bad TPN length
  4028.  0011h bad CONV length
  4029.  0012h bad SYNC level
  4030.  0013h bad security selection
  4031.  0014h bad return control
  4032.  0015h SEC_TOKENS too big
  4033.  0016h PIP_LEN incorrect
  4034.  0017h no use of SNASVCMG
  4035.  0018h unknown partner mode
  4036.  0031h confirm: SYNC_NONE
  4037.  0032h confirm: bad state
  4038.  0033h confirm: NOT_LL_BDY
  4039.  0041h confirmed: bad state
  4040.  0051h deallocate: bad type
  4041.  0052h deallocate: flush bad state
  4042.  0053h deallocate: confirm bad state
  4043.  0055h deallocate: NOT_LL_BDY
  4044.  0057h deallocate: log LL_WRONG
  4045.  0061h flush: not send state
  4046.  0091h post on receipt: invalid length
  4047.  0092h post on receipt: not in receive state
  4048.  0093h post on receipt: bad fill
  4049.  00A1h prepare to receive:invalid type
  4050.  00A2h prepare to receive: unfinished LL
  4051.  00A3h prepare to receive: not in send state
  4052.  00B1h receive and wait: bad state
  4053.  00B2h receive and wait: NOT_LL_BDY
  4054.  00B5h receive and wait: bad fill
  4055.  00C1h receive immediate: not in receive state
  4056.  00C4h receive immediate: bad fill
  4057.  00E1h request to send: not in receive state
  4058.  00F1h send data: bad LL
  4059.  00F2h send data: not in send state
  4060.  0102h send error: log LL wrong
  4061.  0103h send error: bad type
  4062.  0121h test: invalid type
  4063.  0122h test: not in receive state
  4064. ----------6803-------------------------------
  4065. INT 68 - APPC/PC
  4066.     AH = 03h
  4067.     DS:DX -> control block (see below)
  4068.  
  4069. Format of control block:
  4070. Offset    Size    Description
  4071.  00h 12 BYTEs    reserved
  4072.  0Ch    WORD    verb (action)
  4073.  0Eh  6 BYTEs    0
  4074.  14h    DWORD    (high byte first) return code (see AH=01h)
  4075.  18h    WORD    0
  4076.  1Ah  8 BYTEs    (high byte first) logical unit ID
  4077. ---if verb=2400h (TP Started), control block continues---
  4078.  22h  8 BYTEs    (high byte first) TP ID
  4079. ---if verb=2800h (Get ALLOCATE), control block continues---
  4080.  22h    BYTE    type
  4081.         00h dequeue
  4082.         01h test
  4083.  23h    DWORD    pointer to CREATE_TP record
  4084. ---if verb=2A00h (Change Logical Unit). control block continues---
  4085.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  4086.         FFFFFFFFh reject incoming ALLOCATEs
  4087.         00000000h queue ALLOCATEs
  4088.  26h    DWORD    00000000h
  4089.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  4090.  2Eh    DWORD    00000000h
  4091.  32h    BYTE    maximum TPs
  4092.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  4093.         01h resume QUEUE_ALLOCATEs
  4094.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  4095.  38h    DWORD    00000000h
  4096. ----------6804-------------------------------
  4097. INT 68 - APPC/PC
  4098.     AH = 04h
  4099.     DS:DX -> control block (see below)
  4100.  
  4101. Format of control block:
  4102. Offset    Size    Description
  4103.  00h 12 BYTEs    reserved
  4104.  0Ch    WORD    verb (action)
  4105.         2500h TP_ENDED
  4106.         2900h TP_VALID
  4107.  0Eh  6 BYTEs    0
  4108.  14h    DWORD    (high byte first) return code (see AH=01h)
  4109.  18h    WORD    0
  4110.  1Ah  8 BYTEs    (high byte first) TP_ID
  4111.  22h    DWORD -> CREATE_TP record (only if verb = 2900h)
  4112. ----------6805-------------------------------
  4113. INT 68 - APPC/PC - TRANSFER MSG DATA
  4114.     AH = 05h
  4115.     DS:DX -> control block (see below)
  4116.  
  4117. Format of control block:
  4118. Offset    Size    Description
  4119.  00h 12 BYTEs    reserved
  4120.  0Ch    WORD    1C00h
  4121.  0Eh    BYTE    00h user defined
  4122.         01h NMVT
  4123.         02h alert subvectors
  4124.         03h PDSTATS subvectors
  4125.  0Fh  5 BYTEs    0
  4126.  14h    DWORD    (high byte first) return code (see AH=01h)
  4127.  18h 12 BYTEs    0
  4128.  24h    BYTE    if bit 0 clear, add correlation subvector
  4129.         if bit 1 clear, add product set ID subvector
  4130.         if bit 2 clear, do SYSLOG
  4131.         if bit 3 clear, send SSCP_PU_SESSION
  4132.  25h    BYTE    0
  4133.  26h    WORD    length of data
  4134.  28h  N BYTEs    data
  4135. ----------6806-------------------------------
  4136. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  4137.     AH = 06h
  4138.     DS:DX -> control block (see below)
  4139.  
  4140. Format of control block:
  4141. Offset    Size    Description
  4142.  00h 12 BYTEs    reserved
  4143.  0Ch    WORD    1500h
  4144.  0Eh  6 BYTEs    0
  4145.  14h    WORD    (high byte first) primary return code (see AH=02h)
  4146.  16h    DWORD    (high byte first) secondary return code (see below, AH=01h)
  4147.  1Ah  8 BYTEs    (high byte first) logical unit ID
  4148.  22h  8 BYTEs    blanks
  4149.  2Ah  8 BYTEs    (high byte first) partner logical unit name
  4150.  32h  8 BYTEs    (high byte first) mode name
  4151.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  4152.         bit 6: set negotiable values
  4153.  3Bh    BYTE    partner logical unit mode session limit
  4154.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  4155.  3Dh    BYTE    maximum CONWINNERS_TARGET
  4156.  3Eh    BYTE    automatic activation
  4157.  3Fh    BYTE    0
  4158.  40h    BYTE    bit 7: drain target
  4159.         bit 6: drain source
  4160.         bit 5: target responsible, not source
  4161.  
  4162. Values for secondary return code (see also AH=01h):
  4163.   0000h accepted
  4164.   0001h negotiated
  4165.   0003h bad logical unit ID
  4166.   0004h allocation failure, no retry
  4167.   0005h allocation failure, retry
  4168.   0151h can't raise limits
  4169.   0153h all modes must reset
  4170.   0154h bad SNASVCMG limits
  4171.   0155h minimum greater than total
  4172.   0156h mode closed (prim return code = 1)
  4173.     CNOS mode closed (prim return code = 18h)
  4174.   0157h bad mode name (prim return code = 1)
  4175.     CNOS bad mode name (prim return code = 18h)
  4176.   0159h reset SNA drains
  4177.   015Ah single not SRC response
  4178.   015Bh bad partner logical unit
  4179.   015Ch exceeds maximum allowed
  4180.   015Dh change SRC drains
  4181.   015Eh logical unit detached
  4182.   015Fh CNOS command race reject
  4183. ----------6807-------------------------------
  4184. INT 68 - APPC/PC - PASSTHROUGH
  4185.     AH = 07h
  4186.     DS:DX -> control block (format depends on application subsystem)
  4187. SeeAlso: AH=FFh
  4188. ----------68FA-------------------------------
  4189. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  4190.     AH = FAh
  4191.     AL bit 0 = 0 enable
  4192.            1 disable
  4193. ----------68FB-------------------------------
  4194. INT 68 - APPC/PC - CONVERT
  4195.     AH = FBh
  4196.     DS:DX -> control block (see below)
  4197.  
  4198. Format of control block:
  4199. Offset    Size    Description
  4200.  00h 12 BYTEs    reserved
  4201.  0Ch    WORD    1A00h
  4202.  0Eh  6 BYTEs    0
  4203.  14h    DWORD    (high byte first) return code
  4204.  18h    BYTE    conversion
  4205.            00h ASCII to EBCDIC
  4206.            01h EBCDIC to ASCII
  4207.  19h    BYTE    character set
  4208.            00h AE
  4209.            01h A
  4210.            02h G
  4211.  1Ah    WORD    length of string to convert
  4212.  1Ch    DWORD    pointer to source
  4213.  20h    DWORD    pointer to target
  4214. ----------68FC-------------------------------
  4215. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  4216.     AH = FCh
  4217.     AL = 00h disable tracing
  4218.        = 01h enable tracing
  4219.         DX = number of bytes to keep (0=all)
  4220. SeeAlso: AH=FDh
  4221. ----------68FD-------------------------------
  4222. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  4223.     AH = FDh
  4224.     AL = 00h disable tracing
  4225.          01h enable tracing
  4226. SeeAlso: AH=FCh,AH=FEh
  4227. ----------68FE-------------------------------
  4228. INT 68 - APPC/PC - SET TRACE DESTINATION
  4229.     AH = FEh
  4230.     AL = trace destinations
  4231.         bit 0  storage (DS:DX -> trace stats record)
  4232.         bit 1  display
  4233.         bit 2  file (trace written to file OUTPUT.PC)
  4234.         bit 3  printer
  4235. SeeAlso: AH=FDh
  4236.  
  4237. Format of Trace Statistics Record:
  4238. Offset    Size    Description
  4239.  00h    DWORD    pointer to storage trace buffer
  4240.  04h    WORD    max number of 80-byte records in trace
  4241.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  4242.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  4243.  0Ch    DWORD    reserved
  4244. Note:    do not move record while trace is active
  4245. ----------68FF-------------------------------
  4246. INT 68 - APPC/PC - SET PASSTHROUGH
  4247.     AH = FFh
  4248.     DS:DX -> passthrough exit routine
  4249. SeeAlso: AH=07h
  4250. ----------69---------------------------------
  4251. INT 69 - Zenith AT BIOS - ???
  4252.    called by INT 09 handler
  4253. ----------690100-----------------------------
  4254. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  4255.     AX = 0100h
  4256. Return: AL = FFh if present
  4257. SeeAlso: AX=010Fh
  4258. ----------690101-----------------------------
  4259. INT 69 - DECnet DOS CTERM - SEND BYTE
  4260.     AX = 0101h
  4261.     BL = character
  4262.     DX = session handle
  4263. Return: AH >= 80h on error
  4264. SeeAlso: AX=0102h
  4265. ----------690102-----------------------------
  4266. INT 69 - DECnet DOS CTERM - READ BYTE
  4267.     AX = 0102h
  4268.     DX = session handle
  4269. Return: AH >= 80h on error
  4270.     AH < 80h if successful
  4271.         AL = character
  4272. SeeAlso: AX=0101h
  4273. ----------690103-----------------------------
  4274. INT 69 - DECnet DOS CTERM - STATUS
  4275.     AX = 0103h
  4276.     DX = session handle
  4277. Return: AH status flags
  4278.         bit 7 session has been aborted
  4279.         6 DECnet error
  4280.         1 trace data available
  4281.         0 receive data available
  4282.     AL = reason code if DECnet error
  4283.         00h normal disconnect
  4284.         01h unknown message from host
  4285.         02h protocol violation from host
  4286.         03h could not process the initiate message
  4287.         04h error receiving message from host
  4288.         05h error sending message to host
  4289.         06h error checking for message from host
  4290.         07h remote system does not support CTERM
  4291.         08h remote system does not support correct protocol version
  4292.         09h did not receive BIND message from host
  4293.         0Ah could not send BIND message to host
  4294.         0Bh no more sessions available
  4295.         0Ch session does not exist
  4296.         0Dh not enough memory to complete operation
  4297.         0Eh connection has broken
  4298. SeeAlso: AX=0104h
  4299. ----------690104-----------------------------
  4300. INT 69 - DECnet DOS CTERM - DECnet STATUS
  4301.     AX = 0104h
  4302.     DX = session handle
  4303. Return: AX = reason code (see AX=0103h)
  4304. Note:    use this call when AX=0103h returns a DECnet error
  4305. SeeAlso: AX=0103h
  4306. ----------690105-----------------------------
  4307. INT 69 - DECnet DOS CTERM - OPEN SESSION
  4308.     AX = 0105h
  4309.     DS:BX -> ASCIZ node name
  4310.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  4311. Return: AX <= 0 on error
  4312.     AX > 0 session handle
  4313. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  4314. ----------690106-----------------------------
  4315. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  4316.     AX = 0106h
  4317.     DX = session handle
  4318. Return: AH = 00h good close
  4319.        other error code (see AX=0103h)
  4320. SeeAlso: AX=0103h,AX=0105h
  4321. ----------69010A-----------------------------
  4322. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  4323.     AX = 010Ah
  4324. Return: AX = length of session control block in bytes
  4325. SeeAlso: AX=0105h
  4326. ----------69010B-----------------------------
  4327. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  4328.     AX = 010Bh
  4329.     DX = session handle
  4330. Return: AX > 0    DECnet socket for the session
  4331.        = 0    no match for handle
  4332. ----------69010F-----------------------------
  4333. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  4334.     AX = 010Fh
  4335. Return: AH = 00h succesful uninstall
  4336.        other error code
  4337. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  4338. SeeAlso: AX=0100h
  4339. ----------690A-------------------------------
  4340. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  4341.     AH = 0Ah
  4342.     AL = function
  4343.         00h initialize
  4344.         01h open portal
  4345.         02h close portal
  4346.         03h enable multicast address
  4347.         04h disable multicast address
  4348.         05h transmit
  4349.         06h request transmit buffer
  4350.         07h deallocate transmit buffer
  4351.         08h read channel status
  4352.         09h read datalink portal list
  4353.         0Ah read information about a datalink portal
  4354.         0Bh read and/or clear counters
  4355.         0Ch request to boot from a network server
  4356.         0Dh enable Ethernet channel
  4357.         0Eh disable Ethernet channel
  4358.         0Fh start MOP/send a System ID message
  4359.         10h stop MOP
  4360.         11h get DECPARM
  4361.         12h set DECPARM
  4362.         13h external loopback
  4363.     ES:BX -> Datalink Communication Block
  4364. Return: AX = status
  4365.         00h successful
  4366.         01h hardware failed to initialize
  4367.         02h channel state was not off (must be off to execute that command)
  4368.         03h channel state is off (must be on to execute that command)
  4369.         04h address not set
  4370.         05h hardware missing
  4371.         06h buffer too small
  4372.         07h no more buffers available
  4373.         08h no more resources available
  4374.         09h promiscuous receiver active
  4375.         0Ah non exclusive
  4376.         0Bh unrecognized portal
  4377.         0Ch protocol type in use
  4378.         0Dh not a valid Multicast address
  4379.         0Eh outstanding calls
  4380.         0Fh hardware doesn't support receiving bad frames
  4381.         10h none outstanding
  4382.         11h no events
  4383.         12h broken
  4384.         13h buffer quota exceeded
  4385.         14h already initialized
  4386.         15h loopback failure
  4387. SeeAlso: INT 6D"DECnet"
  4388.  
  4389. Format of Datalink Communication Block
  4390. Offset    Type    Description
  4391.  00h    WORD    portal ID
  4392.  02h  6 BYTEs    source address
  4393.  08h  6 BYTEs    destination address
  4394.  0Eh    DWORD    buffer pointer
  4395.  12h    WORD    buffer length
  4396.  14h    WORD    operation
  4397.  16h    BYTE    pad flag (used on open)
  4398.             00h no pad
  4399.             01h pad
  4400.  17h    BYTE    mode flag (used on open)
  4401.             00h 802.3
  4402.             01h Ethernet
  4403.             02h promiscuous
  4404.  18h    DWORD    line status change function
  4405.  1Ch    DWORD    received data function
  4406.  20h    DWORD    transmitted data function
  4407.  24h    BYTE    maximum outstanding transmits/receives
  4408.  25h  2 BYTEs    protocol type
  4409.  27h    WORD    buffers lost
  4410. ----------696996-----------------------------
  4411. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  4412.     AX = 6996h
  4413.     DS:DX -> interrupt handler or 0000h:0000h to disable
  4414. Return: AX = 9669h
  4415. Notes:    ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  4416.       a program to provide hardware interrupt handlers even while being
  4417.       debugged with a debugger that swaps interrupt vectors during
  4418.       debugging.
  4419.     the interrupt vector which is to be reflected is set at installation
  4420.       time and cannot be changed
  4421. ----------6A---------------------------------
  4422. INT 6A - OPTHELP.COM
  4423. Notes:    OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  4424.       assembler
  4425.     may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
  4426. ----------6A---------------------------------
  4427. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  4428. Note:    the 3 bytes preceding the interrupt handler are "LAT"; this serves as
  4429.       the installation check
  4430. ----------6A01--DHFF-------------------------
  4431. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  4432.     AH = 01h
  4433.     DH = FFh
  4434.     AL = character
  4435.     DL = handle
  4436. Return: AH >= 80h on error
  4437. SeeAlso: AH=02h
  4438. ----------6A02--DHFF-------------------------
  4439. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  4440.     AH = 02h
  4441.     DH = FFh
  4442.     DL = handle
  4443. Return: AH < 80h if successful
  4444.         AL = character
  4445.     AH >= 80h on error
  4446. SeeAlso: AH=01h
  4447. ----------6A03--DHFF-------------------------
  4448. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  4449.     AH = 03h
  4450.     DH = FFh
  4451.     DL = handle
  4452. Return: AH = status flags
  4453.         bit 5 transmit buffer empty
  4454.         3 session in start state
  4455.         2 session not active
  4456.         1 unable to queue transmit data
  4457.         0 receive data available
  4458. ----------6AD0--DHFF-------------------------
  4459. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  4460.     AH = D0h
  4461.     DH = FFh
  4462.     AL = FFh no password
  4463.        = 0Fh password at ES:DI
  4464.     ES:BX -> LAT session control block (see below)
  4465.     ES:DI -> 16-byte blank-padded password
  4466. Return: AH = 00h success
  4467.         DL = handle
  4468. SeeAlso: AX=D000h
  4469.  
  4470. Format of LAT Session Control Block:
  4471. Offset    Size    Description
  4472.  00h 18 BYTEs    service name
  4473.  12h 18 BYTEs    node name (future use)
  4474.  24h 18 BYTEs    port name (future use)
  4475.  36h    DWORD    -> session stopped post routine
  4476.  3Ah    DWORD    -> service table overflow post routine
  4477.  3Eh    DWORD    -> transmit post routine
  4478.  42h    DWORD    -> receive post routine
  4479.  46h    WORD    session status
  4480.         04h circuit failure
  4481.         08h stop slot received
  4482.  48h    WORD    slot state (LAT driver use)
  4483.  4Ah    WORD    local credits (LAT driver use)
  4484.  4Ch    DWORD    -> VCB (LAT driver use)
  4485.  50h    WORD    backward slot (LAT driver use)
  4486.  52h    WORD    forward slot (LAT driver use)
  4487.  54h    WORD    remote slot ID (LAT driver use)
  4488.  56h    WORD    local slot ID (LAT driver use)
  4489.  58h    WORD    slot byte count (LAT driver use)
  4490.  5Ah    BYTE    remote credits (LAT driver use)
  4491.  5Bh 255 BYTEs    transmitted data slot
  4492. 15Ah    BYTE    number of receive data slots (4 recommended)
  4493. 15Bh    BYTE    number of occupied slots
  4494. 15Ch    BYTE    index of next receive slot to use
  4495. 15Dh    BYTE    index of current receive slot
  4496. 15Eh    WORD    pointer to first received character
  4497. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  4498. Note:    set post routines to 0000h:0000h if polled operation will be used
  4499. ----------6AD000DHFF-------------------------
  4500. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  4501.     AX = D000h
  4502.     DH = FFh
  4503.     DL = handle
  4504. Return: AX = 0000h successful
  4505.        = 0001h no such session
  4506.        = 0002h session not running, try again later
  4507. SeeAlso: AH=D0h
  4508. ----------6AD100DHFF-------------------------
  4509. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  4510.     AX = D100h
  4511.     DH = FFh
  4512.     DL = handle
  4513. Return: AX = 0000h if successful
  4514.     AH bit 7 set if unable to send break
  4515. ----------6AD300DHFF-------------------------
  4516. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  4517.     AX = D300h
  4518.     DH = FFh
  4519. SeeAlso: AX=D400h
  4520. ----------6AD400DHFF-------------------------
  4521. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  4522.     AX = D400h
  4523.     DH = FFh
  4524.     CX = buffer size
  4525.     ES:BX -> buffer for LAT counters
  4526. Return: AX = 0000h counters copied into buffer
  4527.        = FFFFh buffer too small
  4528. SeeAlso: AX=D300h
  4529. ----------6AD500DHFF-------------------------
  4530. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  4531.     AX = D500h
  4532.     DH = FFh
  4533.     ES:BX -> 17-byte buffer for name
  4534. Return: AH = 00h if successful
  4535.        ES:BX buffer filled
  4536.     AX = FFFFh if end of table or no name available
  4537. Notes:    use this function to get the names of the hosts on the network
  4538.     successive calls are necessary to get all names
  4539. SeeAlso: AX=D600h
  4540. ----------6AD600DHFF-------------------------
  4541. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  4542.     AX = D600h
  4543.     DH = FFh
  4544. Return: AX = number of service table entries
  4545.     BX = 0000h service table has not overflowed
  4546.        = FFFFh service table has overflowed
  4547. SeeAlso: AX=D500h
  4548. ----------6B0000-----------------------------
  4549. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  4550.     AX = 0000h
  4551.     CX = length
  4552.     ES:BX -> buffer
  4553. Return: CX = number of bytes written
  4554. Note:    also supported by NPC NCSI
  4555. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h
  4556. ----------6B0100-----------------------------
  4557. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  4558.     AX = 0100h
  4559.     CX = length of buffer
  4560.     ES:BX -> buffer
  4561. Return: CX = number of bytes read
  4562. Note:    also supported by NPC NCSI
  4563. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AX=FF02h
  4564. ----------6B02-------------------------------
  4565. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  4566.     AH = 02h
  4567.     AL nonzero
  4568. Return: AL = 00h if present and OK
  4569. Note:    also supported by NPC NCSI
  4570. SeeAlso: AX=0700h
  4571. ----------6B0600-----------------------------
  4572. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  4573.     AX = 0600h
  4574.     CX = command
  4575.         02h send break
  4576.         04h disconnect
  4577.         06h hold
  4578. Note:    also supported by NPC NCSI
  4579. ----------6B0700-----------------------------
  4580. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  4581.     AX = 0700h
  4582. Return: CH <> 00h if connection active
  4583. Note:    also supported by NPC NCSI
  4584. SeeAlso: AH=02h,AH=10h
  4585. ----------6B10-------------------------------
  4586. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  4587.     AH = 10h
  4588.     ???
  4589. Return: ???
  4590. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  4591. ----------6B11-------------------------------
  4592. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  4593.     AH = 11h
  4594.     ???
  4595. Return: ???
  4596. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  4597. ----------6B12-------------------------------
  4598. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  4599.     AH = 12h
  4600.     ???
  4601. Return: ???
  4602. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  4603. ----------6B13-------------------------------
  4604. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  4605.     AH = 13h
  4606.     ???
  4607. Return: ???
  4608. SeeAlso: AH=14h,AH=15h
  4609. ----------6B14-------------------------------
  4610. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  4611.     AH = 14h
  4612.     ???
  4613. Return: ???
  4614. SeeAlso: AH=13h,AH=15h,AH=21h
  4615. ----------6B15-------------------------------
  4616. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  4617.     AH = 15h
  4618.     ???
  4619. Return: ???
  4620. SeeAlso: AH=13h,AH=14h
  4621. ----------6B16-------------------------------
  4622. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  4623.     AH = 16h
  4624.     ???
  4625. Return: ???
  4626. SeeAlso: AH=11h,AH=12h,AH=17h
  4627. ----------6B17-------------------------------
  4628. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  4629.     AH = 17h
  4630.     ???
  4631. Return: ???
  4632. SeeAlso: AH=11h,AH=16h
  4633. ----------6B18-------------------------------
  4634. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  4635.     AH = 18h
  4636.     ???
  4637. Return: ???
  4638. SeeAlso: AX=0000h,AH=12h,AH=19h
  4639. ----------6B19-------------------------------
  4640. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  4641.     AH = 19h
  4642.     ???
  4643. Return: ???
  4644. SeeAlso: AX=0100h,AH=12h,AH=18h
  4645. ----------6B1A-------------------------------
  4646. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  4647.     AH = 1Ah
  4648.     ???
  4649. Return: ???
  4650. SeeAlso: AH=12h,AH=1Bh
  4651. ----------6B1B-------------------------------
  4652. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  4653.     AH = 1Bh
  4654.     ???
  4655. Return: ???
  4656. SeeAlso: AH=12h,AH=1Ah
  4657. ----------6B1C-------------------------------
  4658. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE BUFFER CONTROL
  4659.     AH = 1Ch
  4660.     ???
  4661. Return: ???
  4662. SeeAlso: AH=1Dh,AH=1Eh
  4663. ----------6B1D-------------------------------
  4664. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  4665.     AH = 1Dh
  4666.     ???
  4667. Return: ???
  4668. SeeAlso: AH=1Ch,AH=1Eh
  4669. ----------6B1E-------------------------------
  4670. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  4671.     AH = 1Eh
  4672.     ???
  4673. Return: ???
  4674. SeeAlso: AH=1Ch,AH=1Dh
  4675. ----------6B1F-------------------------------
  4676. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  4677.     AH = 1Fh
  4678.     ???
  4679. Return: ???
  4680. SeeAlso: AH=10h,AH=12h
  4681. ----------6B21-------------------------------
  4682. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  4683.     AH = 21h
  4684.     ???
  4685. Return: ???
  4686. SeeAlso: AH=14h
  4687. ----------6B6B-------------------------------
  4688. INT 6B - Tandy SCHOOLMATE PLUS - API
  4689.     AH = 6Bh
  4690.     AL = E0h to FFh
  4691. ----------6B---------------------------------
  4692. INT 6B - VIRUS - "Saddam" - ???
  4693. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  4694. ----------6C---------------------------------
  4695. INT 6C - system resume vector (CONVERTIBLE)
  4696. ----------6C---------------------------------
  4697. INT 6C - DOS 3.2 Realtime Clock update
  4698. ----------6D---------------------------------
  4699. INT 6D - VGA - internal
  4700. Note:    used by IBM, Paradise, Video7, and NCR
  4701. ----------6D---------------------------------
  4702. INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  4703.    points at the original INT 10 entry point set up by the ATI BIOS
  4704. SeeAlso: INT 10
  4705. ----------6D---------------------------------
  4706. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  4707.     AH = function
  4708.     ???
  4709. Return: ???
  4710. SeeAlso: INT 69/AH=0Ah
  4711. ----------6E---------------------------------
  4712. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  4713. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  4714.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  4715.     there is a signature/data area immediately prior to the interrupt
  4716.       handler which may be used as an installation check
  4717.  
  4718. Format of signature area:
  4719. Offset    Size    Description
  4720.  -5    BYTE    major version number
  4721.  -4    BYTE    minor version number
  4722.  -3   3 BYTEs    signature (ASCII "DNP")
  4723. ----------6F----BP0012-----------------------
  4724. INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
  4725.     BP = 0012h
  4726.     AH = 22h
  4727.     BL = address of CMOS byte to read
  4728. Return: AH = status
  4729.     AL = byte read
  4730.     BP, DS destroyed
  4731. SeeAlso: BP=0012h/AH=24h
  4732. ----------6F----BP0012-----------------------
  4733. INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
  4734.     BP = 0012h
  4735.     AH = 24h
  4736.     BL = address of CMOS byte to write
  4737.     AL = new value
  4738. Return: AH = status
  4739.     BP, DS destroyed
  4740. SeeAlso: BP=0012h/AH=22h
  4741. ----------6F---------------------------------
  4742. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  4743. ----------6F00-------------------------------
  4744. INT 6F - 10-NET - LOGIN
  4745.     AH = 00h
  4746.     DS:DX -> login record (see below)
  4747. Return: CL = security level
  4748.     AX = status
  4749.         0000h successful
  4750.         01FFh time out on response
  4751.         02FFh network (hardware) error
  4752.         03FFh invalid password
  4753.         04FFh local resource not available
  4754.         05FFh server resource not available
  4755.         06FFh already logged in under different name
  4756.         07FFh login security failure (node)
  4757.         08FFh not logged in
  4758.         09FFh position calc error
  4759.         0AFFh receive subfunction not = send subfunction (i.e. read, write)
  4760.         0BFFh request function not in range
  4761.         0CFFh no more server file handle entries left
  4762.         0DFFh no more shared file table entries left
  4763.         0EFFh no more user file handle entries left
  4764.         0FFFh chat permit not on
  4765.         10FFh not a server on request
  4766.         11FFh no transporter board error
  4767.         12FFh time out on send
  4768.         13FFh item not found (spool item not on queue)
  4769.         14FFh DOS access incompatible
  4770.         15FFh record already locked
  4771.         16FFh invalid parameter
  4772.         17FFh record lock time out error
  4773.         18FFh currently spooling to named device
  4774.         19FFh dropped receive message (throttle)
  4775.         1AFFh open sharing violation
  4776.         1BFFh no more tuf entries left
  4777.         1CFFh not file owner on open
  4778.         1DFFh read security not passed
  4779.         1EFFh write security not passed
  4780.         1FFFh group security not passed
  4781.         20FFh security file failure
  4782.         21FFh activity file failure
  4783.         22FFh spool cntrl file failure
  4784.         23FFh device not mounted (spooling)
  4785.         24FFh spool file has not been terminated
  4786.         25FFh device not mounted or is not being shared
  4787.         26FFh duplicate node id
  4788.         27FFh file not found error
  4789.         28FFh no more files
  4790.         29FFh unknown internal system error
  4791.         2AFFh print queue is full or corrupted
  4792.         2BFFh invalid function
  4793.         2CFFh invalid handle
  4794.         2DFFh too many files opened
  4795.         2EFFh path not found
  4796.         2FFFh named file is active
  4797. /* I've gotten one submission which says FFxxh, and another with xxFFh */
  4798. /* I don't know which way around these should be, does somebody else know? */
  4799.         FF01h timeout
  4800.         FF02h network error
  4801.         FF03h invalid password
  4802.         FF04h no local buffer
  4803.         FF05h superstation not available
  4804.         FF06h node already logged in
  4805.         FF07h login not valid from this node
  4806.         FF08h node ID already in use
  4807.         FF16h invalid parameter (bad length, invalid node ID, etc)
  4808.         FF17h record locked by another user
  4809.         FF18h sent message has been dropped
  4810. SeeAlso: AH=01h
  4811.  
  4812. Format of login record:
  4813. Offset    Size    Description
  4814.  00h  8 BYTEs    user name
  4815.  08h  8 BYTEs    password
  4816.  10h 12 BYTEs    name of SuperStation
  4817. ----------6F01-------------------------------
  4818. INT 6F - 10-NET - LOGOFF
  4819.     AH = 01h
  4820.     DS:DX -> superstation ID or nulls (12 bytes)
  4821. Return: CX = number of files closed
  4822.     AX = status (see AH=00h)
  4823.         FF08h superstation ID not already logged in
  4824. SeeAlso: AH=00h
  4825. ----------6F02-------------------------------
  4826. INT 6F - 10-NET - STATUS OF NODE
  4827.     AH = 02h
  4828.     DS:DX -> 512-byte status record (see below)
  4829. Return: CF set on error
  4830.         AX = error code (see AH=00h)
  4831.     CF clear if successful
  4832.  
  4833. Format of node status record:
  4834. Offset    Size    Description
  4835.  00h  8 BYTEs    user name (0 if none)
  4836.  08h    BYTE    station type
  4837.            00h workstation
  4838.            01h superstation
  4839.            02h gateway station
  4840.            03h gateway active
  4841.            04h logged into multiple superstations
  4842.            05h reserved
  4843.  09h 24 BYTEs    list of superstations logged into more than one superstation
  4844.  21h 12 BYTEs    node ID
  4845.  2Dh    WORD    message count for this station (send for user node, receive for
  4846.         superstations)
  4847. ---for superstations only---
  4848.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  4849.  31h    BYTE    user service flag
  4850.         bit 7: gate
  4851.             6: print permit on
  4852.             4: SUBMIT is on
  4853.             3: mail waiting for node
  4854.             2: calendar waiting for you
  4855.             1: news waiting for you
  4856.             0: mail waiting for you
  4857.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  4858.  33h    BYTE    number of unprinted spool files
  4859.  34h    BYTE    number of opened files
  4860.  35h    BYTE    number of logged on nodes
  4861.  36h    BYTE    primary drive (1=A:)
  4862.  37h    BYTE    reserved
  4863.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  4864. 1F4h  3 BYTEs    time: sec/min/hrs
  4865. 1F7h  3 BYTEs    date: day/mon/year-1980
  4866. ----------6F03-------------------------------
  4867. INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
  4868.     AH = 03h
  4869.     DS:DI -> node ID (optional)
  4870. Return: ES:BX -> configuration table 
  4871. SeeAlso: AH=13h
  4872.  
  4873. Format of configuration table:
  4874. Offset    Size    Description
  4875. -41    WORD    local device table address
  4876. -39    WORD    extended network error mapping table address
  4877. -37    WORD    shared device table address
  4878. -35    WORD    mounted device table address
  4879. -33    BYTE    receive buffer counter
  4880. -32    BYTE    collect buffer counter
  4881. -31    WORD    TUF address
  4882. -29    BYTE    enable flag
  4883. -28    BYTE    FCB keep flag
  4884. -27    WORD    reserved
  4885. ---up to here, 10-Net v3.3---
  4886. -25    WORD    count of dropped Send6F
  4887. -23    WORD    buffer start address
  4888. -21    WORD    comm driver base address
  4889. -19    WORD    send/receive retry count
  4890. -17    BYTE    number of 550ms loops before timeout
  4891. -16    WORD    UFH address
  4892. -14    WORD    CDIR address
  4893. -12    WORD    LTAB address
  4894. -10    WORD    SFH address
  4895. -8    WORD    FTAB address
  4896. -6    WORD    RLTAB address
  4897. -4    WORD    SMI address
  4898. -2    WORD    NTAB address
  4899.  00h    WORD    address of first CT_DRV
  4900.  02h    BYTE    number of DRV entries
  4901.  03h  8 BYTEs    login name
  4902.  0Bh 12 BYTEs    node ID (blank-padded)
  4903.  17h  6 BYTEs    node address
  4904.  1Dh    BYTE    flag
  4905.  1Eh    BYTE    CT_CFLG (chat permit)
  4906.         bit 1: sound bell
  4907.         bit 0: CHAT permit
  4908.  1Fh    BYTE    CT_PSFLG
  4909.         bit 5: PRINT permit
  4910.         bit 4: KB initiated
  4911.         bit 3: CHAT called FOXPTRM
  4912.         bit 2: SUBMIT active
  4913.         bit 1: SUBMIT received
  4914.         bit 0: SUBMIT permit
  4915.  20h    BYTE    in 10Net flag
  4916.  21h    WORD    receive message count
  4917.  23h    WORD    send message count
  4918.  25h    WORD    retry count
  4919.  27h    WORD    failed count
  4920.  29h    WORD    driver errors
  4921.  2Bh    WORD    dropped responses/CHATs
  4922.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  4923.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  4924.  3Ch    BYTE    active CB channel
  4925.  3Dh    BYTE    received 6F messages on queue
  4926.  3Eh  9 BYTEs    activity counters for channels 1-9
  4927. ---beyond here, 10-Net v3.3---
  4928.  47h    BYTE    bit 0 = RS232 gate
  4929.             1 = Send6F gate (user set)
  4930.  48h    DWORD    pointer into gate (user set)
  4931.  4Ch    DWORD    pointer into 10Net send
  4932.  50h  N WORDs    addresses of timer blocks
  4933. ----------6F04-------------------------------
  4934. INT 6F - 10-NET - SEND
  4935.     AH = 04h
  4936.     DS:BX -> record
  4937.         12 BYTEs receiving node's ID
  4938.             if first byte has high-order bit set, message is
  4939.                directed to the CT_RGATE vector at the receiver
  4940.             if second byte is 00h, first byte is taken as a CB
  4941.                channel number and delivered to all nodes on same
  4942.                channel
  4943.            WORD     length of data at DX
  4944.     DS:DX -> data (max 1024 bytes)
  4945. Return: CF set on error
  4946.         AX = error code (see AH=00h)
  4947.     CF clear if successful
  4948. SeeAlso: AH=05h
  4949. ----------6F05-------------------------------
  4950. INT 6F - 10-NET - RECEIVE
  4951.     AH = 05h
  4952.     CX = number of seconds before timeout
  4953.     DS:DX -> receive buffer (see below)
  4954. Return: CF set on error
  4955.         AX = error code (see AH=00h)
  4956.     CF clear if successful
  4957.         AH = FEh if dequeued message is a CB message
  4958. SeeAlso: AH=04h
  4959.  
  4960. Format of receive buffer:
  4961. Offset    Size    Description
  4962.  00h 12 BYTEs    sending node's ID
  4963.  0Ch    WORD    length of message
  4964.  0Eh  N BYTEs    message (maximum 1024 bytes)
  4965. ----------6F07-------------------------------
  4966. INT 6F - 10-NET - LOCK HANDLE
  4967.     AH = 07h
  4968.     BX = file handle
  4969.     CX:DX = starting offset in file
  4970.     SI = record length
  4971. Return: CF set on error
  4972.         AX = error code (see also AH=00h)
  4973.         0002h file not found
  4974.     CF clear if successful
  4975. SeeAlso: AH=08h,INT 21/AH=5Ch
  4976. ----------6F08-------------------------------
  4977. INT 6F - 10-NET - UNLOCK HANDLE
  4978.     AH = 08h
  4979.     BX = file handle
  4980.     AL = mode
  4981.         00h unlock all
  4982.         01h unlock record at CX:DX
  4983. Return: CF set on error
  4984.         AX = error code (see also AH=00h)
  4985.         0002h file not found
  4986.     CF clear if successful
  4987. SeeAlso: AH=07h,INT 21/AH=5Ch
  4988. ----------6F09-------------------------------
  4989. INT 6F - 10-NET - SUBMIT
  4990.     AH = 09h
  4991.     DS:BX -> submit record (see below)
  4992.  
  4993. Format of submit record:
  4994. Offset    Size    Description
  4995.  00h 12 BYTEs    destination node ID (must be logged in)
  4996.  0Ch    WORD    length+2 of following 'command line' text
  4997.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  4998. ----------6F0A-------------------------------
  4999. INT 6F - 10-NET - CHAT
  5000.     AH = 0Ah
  5001.     DS:BX -> control parameters (see below)
  5002.     DS:DX -> chat message (see below)
  5003.  
  5004. Format of control parameters:
  5005. Offset    Size    Description
  5006.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  5007.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  5008.  10h 12 BYTEs    destination node ID
  5009.  
  5010. Format of chat message:
  5011. Offset    Size    Description
  5012.  00h    WORD    length+2 of following text
  5013.  02h  N BYTEs    text, max 101 bytes
  5014. ----------6F0B-------------------------------
  5015. INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  5016.     AH = 0Bh
  5017.     AL = drive number or 0
  5018.     ES:SI = Ethernet address or 0
  5019.     DS:BX -> 31-byte ASCIZ semaphore name
  5020. Return: AL = status
  5021.         00h successful
  5022.         01h semaphore currently locked
  5023.         02h server not responding
  5024.         03h invalid semaphore name
  5025.         04h semaphore list is full
  5026.         05h invalid drive ID
  5027.         06h invalid Ethernet address
  5028.         07h not logged in
  5029.         08h write to network failed
  5030.         09h semaphore already logged in this CPU
  5031. Note:    same as INT 60/AH=12h
  5032. SeeAlso: AH=0Ch,INT 60/AH=12h
  5033. ----------6F0C-------------------------------
  5034. INT 6F - 10-NET - UNLOCK SEMAPHORE
  5035.     AH = 0Ch
  5036.     AL = drive number or 0
  5037.     ES:SI = Ethernet address or 0
  5038.     DS:BX -> 31-byte ASCIZ semaphore name
  5039. Return: AL = status (see also AH=0Bh)
  5040.         01h semaphore not locked
  5041. Note:    same as INT 60/AH=13h
  5042. SeeAlso: AH=0Bh,INT 60/AH=13h
  5043. ----------6F0D-------------------------------
  5044. INT 6F - 10-NET - WHO
  5045.     AH = 0Dh
  5046.     AL = type code
  5047.         01h return superstations only
  5048.         02h return non-superstations only
  5049.         otherwise return all
  5050.     CX = length of data
  5051.     DS:DX -> array of records to be filled (see below)
  5052. Return: CL = number of records returned (responding stations)
  5053.  
  5054. Format of station record:
  5055. Offset    Size    Description
  5056.  00h 12 BYTEs    node ID
  5057.  0Ch    BYTE    flags
  5058.         bit 1 = workstation
  5059.             2 = superstation
  5060.             3 = xgate
  5061.             4 = active gate
  5062. ---if AL = 01h---
  5063.  0Dh    BYTE    version number
  5064.     WORD    level number of 10Net software in responding node
  5065. ---if AL = 02h---
  5066.  0Dh  8 BYTEs    user ID
  5067.  15h    BYTE    version number
  5068.  16h    WORD    level number
  5069. ----------6F0E-------------------------------
  5070. INT 6F - 10-NET - SPOOL/PRINT
  5071.     AH = 0Eh
  5072.     DS:DX -> spool/print record (see below)
  5073. Return: CF set on error
  5074.         AX = error code (see also AH=00h)
  5075.         FF17h device not mounted
  5076.         FF18h already spooling to named device
  5077.     CF clear if successful
  5078.  
  5079. Format of Spool/Print record:
  5080. Offset    Size    Description
  5081.  00h    WORD    operation code
  5082.            00h initiate spool
  5083.            01h abort print
  5084.            02h close spool
  5085.            03h delete spool
  5086.            04h print
  5087.            05h get report info
  5088.            06h set chat template
  5089.            07h queue
  5090.            08h return queue
  5091.            09h queue non-spooled file for printing
  5092.  02h 11 BYTEs    file name in FCB format
  5093. ---if operation code = 00h or 06h---
  5094.  0Dh    BYTE    notification
  5095.         bit 7: queue to top
  5096.         bit 6: do ID page
  5097.         bit 5: no form feed
  5098.         bit 4: reserved
  5099.         bit 3: explicity queuing only
  5100.         bit 2: notify at print completion
  5101.         bit 1: notify server operator/reply
  5102.         bit 0: notify at print start
  5103.  0Eh    BYTE    days to keep (FFh=forever)
  5104.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  5105.         bits 4-7: remote drive to store spool file (1=A,...)
  5106.  10h    WORD    length of following data area
  5107.  12h  N BYTEs    up to 64 bytes of description
  5108. ---if operation code = 03h---
  5109.  0Dh  8 BYTEs    user ID to associate with filename
  5110. ---if operation code = 04h---
  5111.  0Dh    WORD    block number
  5112.  0Fh  8 BYTEs    user ID to associate with filename
  5113. ---if operation code = 05h---
  5114.  0Dh    BYTE    RRN to start retrieve
  5115.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  5116.         bit 3: if set, return entries for all users
  5117.  0Fh    WORD    length of following area
  5118.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  5119. ---if operation code = 07h---
  5120.  0Dh    BYTE    queue number
  5121.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  5122.  0Fh    WORD    number of bytes of test print to be done
  5123.  11h    BYTE    code: 01h print device
  5124.               02h test print count
  5125.               03h prn
  5126. ---if operation code = 08h---
  5127.  0Dh    BYTE    queue location or $SCNTL location to start access
  5128.             returns next item for access:
  5129.                 00h-7Fh queued items
  5130.                 80h-FEh non-queued, non-printed items
  5131.                 FFh    no more items
  5132.  0Eh    WORD    unused
  5133.  10h    WORD    length of following area
  5134.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  5135. ---if operation code = 09h---
  5136.  0Dh  3 BYTEs    unused
  5137.  10h  N BYTEs    path to non-spooled file to be queued for printing
  5138.  
  5139. Format of $SCNTL record:
  5140. Offset    Size    Description
  5141.  00h  8 BYTEs    user ID
  5142.  08h 11 BYTEs    filename in FCB format
  5143.  13h  6 BYTEs    node ID
  5144.  19h  3 BYTEs    creation date
  5145.  1Ch    BYTE    flags
  5146.         bit 7: queue to top
  5147.             6: do ID page
  5148.             5: no form feed at end
  5149.             4: reserved
  5150.             3: explicit queueing only
  5151.             2: notify at completion
  5152.             1: notify server operator/reply
  5153.             0: notify at start
  5154.  1Dh    BYTE    retention time in days
  5155.  1Eh    BYTE    printing device (LPTx)
  5156.  1Fh  3 BYTEs    date last printed (0 = never)
  5157.  22h    BYTE    device containing spoolfile
  5158.  23h    WORD    bytes to print for test print
  5159.  25h    WORD    block number to start print
  5160.  27h    BYTE    reserved
  5161. ----------6F10-------------------------------
  5162. INT 6F - 10-NET - ATTACH/DETACH PRINTER
  5163.     AH = 10h
  5164.     AL = subfunction
  5165.         00h initiate spooling if LPT1 is mounted
  5166.         01h terminate spooling if LPT1 is mounted
  5167. SeeAlso: INT 21/AX=5D08h
  5168. ----------6F11-------------------------------
  5169. INT 6F - 10-NET - LOCK FCB
  5170.     AH = 11h
  5171.     AL = mode
  5172.         01h sequential
  5173.         02h random
  5174.         03h random block
  5175.         CX = number of records
  5176.     DS:DX -> FCB (see INT 21/AH=0Fh)
  5177. Return: CF set on error
  5178.         AX = error code (see also AH=00h)
  5179.         0002h file not found
  5180.     CF clear if successful
  5181. SeeAlso: AH=12h
  5182. ----------6F12-------------------------------
  5183. INT 6F - 10-NET - UNLOCK FCB
  5184.     AH = 12h
  5185.     AL = mode
  5186.         00h sequential
  5187.         01h random
  5188.         02h random block
  5189.         CX = number of records
  5190.     DS:DX -> FCB (see INT 21/AH=0Fh)
  5191. Return: CF set on error
  5192.         AX = error code (see also AH=00h)
  5193.         0002h file not found
  5194.     CF clear if successful
  5195. SeeAlso: AH=11h
  5196. ----------6F13-------------------------------
  5197. INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
  5198.     AH = 13h
  5199.     DS:DX -> node ID, 12 bytes blank-padded
  5200. Return: CF set on error
  5201.         AX = error code (see AH=00h)
  5202.     CF clear if successful
  5203.         ES:BX = configuration table address on given machine
  5204. SeeAlso: AH=03h
  5205. ----------6F14-------------------------------
  5206. INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
  5207.     AH = 14h
  5208.     BX:SI = address of remote memory
  5209.     CX = length (<=1024 bytes)
  5210.     DS:DX -> node ID, 12 bytes blank-padded
  5211.     DS:DI -> area to receive remote memory image
  5212. Return: CF set on error
  5213.         AX = error code (see AH=00h)
  5214.     CF clear if successful
  5215.         CX = amount of memory copied to DS:SI
  5216. ----------6F1501-----------------------------
  5217. INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
  5218.     AX = 1501h
  5219.     BX = zero-based index
  5220.     DS:SI -> node ID, 12 bytes blank-padded
  5221.     ES:DI -> 85-byte buffer for shared device table entry (see below)
  5222. Return: CF set on error
  5223.         AX = error code (see AH=00h)
  5224.     CF clear if successful
  5225.         ES:DI buffer contains shared device table entry of BXth device:
  5226. SeeAlso: AX=1502h,AX=1503h
  5227.  
  5228. Format of shared device table entry:
  5229. Offset    Size    Description
  5230.  00h  8 BYTEs    device
  5231.  08h  8 BYTEs    alias
  5232.  10h 64 BYTEs    path
  5233.  50h  8 BYTEs    password
  5234.  58h    BYTE    access
  5235.  59h  4 BYTEs    mask
  5236. ----------6F1502-----------------------------
  5237. INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
  5238.     AX = 1502h
  5239.     DS:SI -> node ID, 12 bytes blank-padded
  5240.     ES:DI -> valid shared device table entry
  5241. Return: CF set on error
  5242.         AX = error code (see AH=00h)
  5243.     CF clear if successful
  5244. SeeAlso: AX=1501h,AX=1503h
  5245. ----------6F1503-----------------------------
  5246. INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
  5247.     AX = 1503h
  5248.     BX = zero-based index
  5249.     DS:SI -> node ID, 12 bytes blank-padded
  5250. Return: CF set on error
  5251.         AX = error code (see AH=00h)
  5252.     CF clear if successful
  5253. SeeAlso: AX=1501h,AX=1502h
  5254. ----------6F17-------------------------------
  5255. INT 6F - 10-NET v3.3 - MOUNT
  5256.     AH = 17h
  5257.     AL = local drive number (0=A:)
  5258.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  5259.     DS:DX -> node ID, 12 bytes blank-padded
  5260. Return: CF set on error
  5261.         AX = error code (see AH=00h)
  5262.     CF clear if successful
  5263. SeeAlso: AH=18h
  5264. ----------6F18-------------------------------
  5265. INT 6F - 10-NET v3.3 - UNMOUNT
  5266.     AH = 18h
  5267.     AL = local drive number (0=A:)
  5268.     BL = type
  5269.         00h        disk
  5270.         01h-03h LPTn
  5271.         04h,05h COMx
  5272. Return: CF set on error
  5273.         AX = error code (see AH=00h)
  5274.     CF clear if successful
  5275. SeeAlso: AH=17h
  5276. ----------70---------------------------------
  5277. INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
  5278. Notes:    this interrupt is called when the real-time clock chip generates an
  5279.       alarm or periodic interrupt, among others.  The periodic interrupt
  5280.       occurs 1024 times per second, although many BIOSes turn it off in
  5281.       the INT 70h handler unless in an event wait (see INT 15/AH=83h or
  5282.       INT 15/AH=86h).
  5283.     may be masked by setting bit 0 on I/O port A1h
  5284. SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
  5285. SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview"
  5286. ----------70---------------------------------
  5287. INT 70 - VIRUS "Stupid" - ???
  5288. SeeAlso: INT 6B"VIRUS",INT E0"VIRUS"
  5289. ----------71---------------------------------
  5290. INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  5291. Notes:    may be masked by setting bit 1 on I/O port A1h
  5292.     the default BIOS handler invokes INT 0A for compatibility, since the
  5293.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  5294.       AT expansion bus.
  5295.     under DESQview, only the INT 15h vector and BASIC segment address (the
  5296.       word at 0000h:0510h) may be assumed to be valid for the handler's
  5297.       process
  5298. SeeAlso: INT 0A,INT 59
  5299. ----------72---------------------------------
  5300. INT 72 - IRQ10 - RESERVED
  5301. Note:    may be masked by setting bit 2 on I/O port A1h
  5302. SeeAlso: INT 5A
  5303. ----------73---------------------------------
  5304. INT 73 - IRQ11 - RESERVED
  5305. Note:    may be masked by setting bit 3 on I/O port A1h
  5306. SeeAlso: INT 5B
  5307. ----------74---------------------------------
  5308. INT 74 - IRQ12 - POINTING DEVICE (PS)
  5309. Notes:    may be masked by setting bit 4 on I/O port A1h
  5310.     under DESQview, only the INT 15h vector and BASIC segment address (the
  5311.       word at 0000h:0510h) may be assumed to be valid for the handler's
  5312.       process
  5313. SeeAlso: INT 33,INT 5C
  5314. ----------75---------------------------------
  5315. INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  5316.    redirected to INT 02 by the BIOS, for compatibility with the PC
  5317. Notes:    may be masked by setting bit 5 on I/O port A1h
  5318.     not all clones wire the coprocessor to generate this IRQ; some systems
  5319.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  5320.       (see INT 10"COPROCESSOR")
  5321.     under DESQview, only the INT 15h vector and BASIC segment address (the
  5322.       word at 0000h:0510h) may be assumed to be valid for the handler's
  5323.       process
  5324. SeeAlso: INT 10"COPROCESSOR",INT 5D
  5325. ----------76---------------------------------
  5326. INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
  5327. Note:    may be masked by setting bit 6 on I/O port A1h
  5328. SeeAlso: INT 0E"IRQ6",INT 5E
  5329. ----------77---------------------------------
  5330. INT 77 - IRQ15 - RESERVED (AT,PS)
  5331. Note:    may be masked by setting bit 7 on I/O port A1h
  5332. SeeAlso: INT 5F
  5333. ----------77---------------------------------
  5334. INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  5335. Note:    may be masked by setting bit 7 on I/O port A1h
  5336. SeeAlso: INT 15/AX=4600h,INT 5F
  5337. ----------78---------------------------------
  5338. INT 78 - UofSalford DBOS DOS extender - API
  5339.     BYTE following INT instruction contains function code
  5340.         03h switch to protected mode
  5341.         1Eh set real-mode memory size (specify how much real-mode memory
  5342.               to leave free when running FTN77 programs)
  5343.         22h uninstall
  5344.     ???
  5345. Return: ???
  5346. Note:    DBOS supports functions 00h through 50h
  5347. ----------78---------------------------------
  5348. INT 78 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ0
  5349. Note:    this vector is overwritten when GO32 starts but is not restored
  5350. SeeAlso: INT 08,INT 79"GO32"
  5351. ----------7800-------------------------------
  5352. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  5353.     AH = 00h
  5354.     DX = interface board I/O port
  5355. Return:    CF set on error
  5356.         AL = error code
  5357.         00h illegal command given to SCSI code
  5358.         01h invalid I/O port specified (must be from 100H to 3F8H, and
  5359.             must be on an 8-port boundary)
  5360.         02h invalid DMA channel specified (must be from 1 to 3)
  5361.         03h invalid SCSI board number specified (must be from 0 to 7)
  5362.         04h error from data register test during self-test
  5363.         05h SCSI input signals not all 0 when SCSI RST activated
  5364.         06h SCSI input signals not all 0 before selecting a SCSI device
  5365.         07h BSY signal is active; SCSI bus is busy
  5366.         08h SCSI board not selected, BSY signal did not come on in
  5367.             response to raising SEL
  5368.         09h time-out waiting for status state, signifying end of DMA
  5369.             transfer
  5370. Note:    if this routine is not called, the port is the driver's default
  5371.       (usually 0280h or 0300h)
  5372.     an installation check is performed by TARGA.DEV upon initialization
  5373.       by checking for the string "SCSI" at offset 03h into the interrupt
  5374.       handler
  5375. SeeAlso: AH=01h,AH=02h
  5376. ----------7801-------------------------------
  5377. INT 78 - TARGA.DEV - GET I/O PORT
  5378.     AH = 01h
  5379. Return: DX = current interface board I/O port
  5380. SeeAlso: AH=00h,AH=03h"TARGA"
  5381. ----------7802-------------------------------
  5382. INT 78 - TARGA.DEV - SET DMA CHANNEL
  5383.     AH = 02h
  5384.     AL = interface board DMA channel
  5385. Return: CF set on error
  5386.     AL = error code (see AH=00h)
  5387. Note:    if this routine is not called, the DMA channel is the driver's default
  5388.       (usually 3)
  5389. SeeAlso: AH=00h,AH=03h"TARGA"
  5390. ----------7803-------------------------------
  5391. INT 78 - TARGA.DEV - GET DMA CHANNEL
  5392.     AH = 03h
  5393. Return: AL = current interface board DMA channel
  5394. SeeAlso: AH=01h,AH=02h
  5395. ----------7804-------------------------------
  5396. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  5397.     AH = 04h
  5398.     AL = SCSI device number
  5399. Return: CF set on error
  5400.     AL = error code (see AH=00h)
  5401. Note:    if this routine is not called, the device number used is the driver's
  5402.       default (usually 0)
  5403. SeeAlso: AH=02h,AH=05h
  5404. ----------7805-------------------------------
  5405. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  5406.     AH = 05h
  5407. Return: AL = current SCSI device number
  5408. SeeAlso: AH=03h"TARGA",AH=04h
  5409. ----------7806-------------------------------
  5410. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  5411.     AH = 06h
  5412.     AL = 00h clear early return mode
  5413.        = 01h set early return mode
  5414. Note:    if early return mode is set then SCSI will return with no errors
  5415.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  5416.     if this routine is not called, early return mode is cleared
  5417. SeeAlso: AH=13h,AH=14h,AH=15h
  5418. ----------7808-------------------------------
  5419. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  5420.     AH = 08h
  5421. Return: CF set on error
  5422.     AL = error code (see AH=00h)
  5423. Note:    the SCSI bus is also reset
  5424. SeeAlso: AH=09h
  5425. ----------7809-------------------------------
  5426. INT 78 - TARGA.DEV - RESET SCSI BUS
  5427.     AH = 09h
  5428. Return: AL = error code if carry set (see AH=00h)
  5429. SeeAlso: AH=08h
  5430. ----------7810-------------------------------
  5431. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  5432.     AH = 10h
  5433.     DS:SI -> command bytes
  5434. Return: AH = SCSI status byte
  5435.     CF clear if successful
  5436.         AL = SCSI message byte
  5437.     CF set on error
  5438.         AL = error code (see AH=00h)
  5439. SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
  5440.  
  5441. Format of SCSI Command:
  5442. Offset    Size    Description
  5443.  00h    BYTE    length of command
  5444.  01h    ???    command bytes
  5445. ----------7811-------------------------------
  5446. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  5447.     AH = 11h
  5448.     DS:SI -> command bytes
  5449.     ES:BX -> data storage area
  5450.     CX = number of data bytes to transfer
  5451. Return: AH = SCSI status byte
  5452.     CF clear if successful
  5453.         AL = SCSI message byte
  5454.     CF set on error
  5455.         AL = error code (see AH=00h)
  5456. Note:    this command receives data internally one byte at a time
  5457. SeeAlso: AH=10h,AH=13h
  5458.  
  5459. Format of SCSI Command:
  5460. Offset    Size    Description
  5461.  00h    BYTE    length of command
  5462.  01h    ???    command bytes
  5463. ----------7812-------------------------------
  5464. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  5465.     AH = 12h
  5466.     DS:SI -> command bytes
  5467.     ES:BX -> data storage area
  5468.     CX = number of data bytes to transfer
  5469. Return: AH = SCSI status byte
  5470.     CF clear if successful
  5471.         AL = SCSI message byte
  5472.     CF set on error
  5473.         AL = error code (see AH=00h)
  5474. Note:    this command sends data internally one byte at a time
  5475. SeeAlso: AH=14h
  5476.  
  5477. Format of SCSI Command:
  5478. Offset    Size    Description
  5479.  00h    BYTE    length of command
  5480.  01h    ???    command bytes
  5481. ----------7813-------------------------------
  5482. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  5483.     AH = 13h
  5484.     DS:SI -> command bytes
  5485.     ES:BX -> data storage area
  5486.     DX:CX = number of data bytes to transfer
  5487. Return: AH = SCSI status byte (if early return mode is clear)
  5488.     CF clear if successful
  5489.         AL = SCSI message byte (if early return mode is clear)
  5490.     CF set on error
  5491.         AL = error code (see AH=00h)
  5492. Note:    this command receives data using DMA
  5493. SeeAlso: AH=11h,AH=12h
  5494.  
  5495. Format of SCSI Command:
  5496. Offset    Size    Description
  5497.  00h    BYTE    length of command
  5498.  01h    ???    command bytes
  5499. ----------7814-------------------------------
  5500. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  5501.     AH = 14h
  5502.     DS:SI -> command bytes
  5503.     ES:BX -> data storage area
  5504.     DX:CX = number of data bytes to transfer
  5505. Return: AH = SCSI status byte (if early return mode is clear)
  5506.     CF clear if successful
  5507.         AL = SCSI message byte (if early return mode is clear)
  5508.     CF set on error
  5509.         AL = error code (see AH=00h)
  5510. Note:    this command sends data using DMA
  5511. SeeAlso: AH=12h,AH=13h
  5512.  
  5513. Format of SCSI Command:
  5514. Offset    Size    Description
  5515.  00h    BYTE    length of command
  5516.  01h    ???    command bytes
  5517. ----------7815-------------------------------
  5518. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  5519.     AH = 15h
  5520. Return: AH = SCSI status byte
  5521.     CF clear if successful
  5522.         AL = SCSI message byte
  5523.     CF set on error
  5524.         AL = error code (see AH=00h)
  5525. Note:    if AH=06h was previously called to set the early return mode, this
  5526.       function finishes a command AH=13h or AH=14h which returned before
  5527.       the last DMA transfer was finished
  5528. SeeAlso: AH=06h,AH=13h,AH=14h
  5529. ----------79---------------------------------
  5530. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  5531. Return: CF set if no keystroke available
  5532.         AX = FFFFh
  5533.     CF clear if key pressed
  5534.         AX = keystroke
  5535. Notes:    if a keystroke is available, it is removed from the keyboard buffer
  5536.       before being returned
  5537.     AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  5538.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  5539. SeeAlso: INT 29
  5540. ----------79---------------------------------
  5541. INT 79 - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ1
  5542. Note:    this vector is overwritten when GO32 starts but is not restored
  5543. SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
  5544. ----------7A---------------------------------
  5545. INT 7A - Topware Network Operating System - ???
  5546.     AL = ???
  5547.     ???
  5548. Return: ???
  5549. SeeAlso: INT 21/AH=FFh"Topware",INT 2F/AX=FF00h
  5550. ----------7A---------------------------------
  5551. INT 7A - AutoCAD Device Interface
  5552.     ???
  5553. SeeAlso: INT 61/AX=0007h"OPTIMA",INT 7B"AutoCAD"
  5554. ----------7A---------------------------------
  5555. INT 7A - X.PC Packet software interface
  5556.         ES:BX -> parameter block
  5557. SeeAlso: INT 60/AX=01FFh
  5558. ----------7A---------------------------------
  5559. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  5560. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  5561.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  5562.       entry point.    For both INT 7A and the FAR entry point, BX contains
  5563.       the function number; IPX is sometimes called internally with BX bit
  5564.       15 set.
  5565. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell"
  5566. ----------7A----BX0000-----------------------
  5567. INT 7A - Novell NetWare Low-Level API (IPX) Driver - OPEN SOCKET
  5568.     BX = 0000h
  5569.     AL = mode
  5570.         00h open until close or terminate
  5571.         FFh open until close
  5572.     DX = socket number (high byte in DL)
  5573.         0000h dynamic allocation
  5574.         else  socket to open
  5575. Return: AL = return code
  5576.         00h success
  5577.         DX = socket number
  5578.         FEh socket table full
  5579.         FFh socket already open
  5580. SeeAlso: BX=0001h
  5581. ----------7A---------------------------------
  5582. INT 7A - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ2
  5583. Note:    this vector is overwritten when GO32 starts but is not restored
  5584. SeeAlso: INT 0A,INT 79"GO32",INT 7B"GO32"
  5585. ----------7A----BX0001-----------------------
  5586. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CLOSE SOCKET
  5587.     BX = 0001h
  5588.     DX = socket (high byte in DL)
  5589. SeeAlso: BX=0000h
  5590. ----------7A----BX0002-----------------------
  5591. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET LOCAL TARGET
  5592.     BX = 0002h
  5593.     ES:SI -> target internetwork address
  5594.     ES:DI -> 6-byte buffer for local target
  5595. Return: AL = return code
  5596.         00h success
  5597.            CX = expected one-way transfer time (clock ticks)
  5598.            ES:DI -> local target
  5599.         FAh unsuccessful
  5600. Note:    The internetwork address consists of a 4-byte network address followed
  5601.       by a 6-byte node address.  The local target is only a 6-byte node
  5602.       address.  If the target is in the same network, the local target is
  5603.       just the node address of target; otherwise, the local target is the
  5604.       node address of the bridge that leads to the target.
  5605. SeeAlso: BX=0009h
  5606. ----------7A----BX0003-----------------------
  5607. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND PACKET
  5608.     BX = 0003h
  5609.     ES:SI -> Event Control Block (see below)
  5610. SeeAlso: BX=0004h,BX=000Fh
  5611.  
  5612. Format of Event Control Block:
  5613. Offset    Size    Description
  5614.  00h    DWORD    Link
  5615.  04h    DWORD    -> Event Service Routine (00000000h if none)
  5616.  08h    BYTE    in use flag
  5617.  09h    BYTE    completion code
  5618.  0Ah    WORD    socket (high byte first [big-endian])
  5619.  0Ch  4 BYTES    IPX workspace
  5620.  10h 12 BYTES    driver workspace
  5621.  1Ch  6 BYTES    immediate local node address
  5622.  22h    WORD    fragment count
  5623.  26h    var    fragment descriptors
  5624.         Offset    Size    Description
  5625.          00h    DWORD    -> fragment data
  5626.          04h    WORD    size of fragment in bytes.
  5627. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  5628.       On call, the in use flag is zero if the ECB has been handled,
  5629.       non-zero otherwise. If the flag is zero, the completion code holds
  5630.       the result of the event:
  5631.         00h success
  5632.         F9h event should not be cancelled
  5633.         FCh cancelled
  5634.         FDh malformed packet
  5635.         FEh packet undeliverable
  5636.         FFh physical error
  5637.     the first fragment should start with an IPX header
  5638.     all fragments are concatenated and sent in one piece
  5639.     node address FF FF FF FF FF FF broadcasts to all nodes
  5640.  
  5641. Event Service Routine called with:
  5642.     AL = caller's identity (00h = AES, FFh = IPX)
  5643.     ES:SI -> event control block
  5644.     interrupts disabled
  5645.  
  5646. Format of IPX header:
  5647. Offset    Size    Description
  5648.  00h    WORD    checksum (high byte first [big-endian])
  5649.  02h    WORD    length in bytes (high byte first) of total packet
  5650.  04h    BYTE    transport control
  5651.  05h    BYTE    packet type
  5652.         00h unknown packet type
  5653.         01h routing information packet
  5654.         02h echo packet
  5655.         03h error packet
  5656.         04h packet exchange packet (always use this one)
  5657.         05h SPX packet
  5658.         11h (used internally)
  5659.  06h 10 BYTES    destination internetwork address
  5660.  10h    WORD    destination socket (high byte first)
  5661.  12h 10 BYTES    source internetwork address
  5662.  1Ch    WORD    source socket
  5663. ----------7A----BX0004-----------------------
  5664. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR PACKET
  5665.     BX = 0004h
  5666.     ES:SI -> Event Control Block (see BX=0003h)
  5667. SeeAlso: BX=0003h
  5668. ----------7A----BX0005-----------------------
  5669. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE IPX EVENT
  5670.     BX = 0005h
  5671.     AX = delay time
  5672.     ES:SI -> Event Control Block (see BX=0003h)
  5673. SeeAlso: BX=0006h,BX=0007h
  5674. ----------7A----BX0006-----------------------
  5675. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CANCEL EVENT
  5676.     BX = 0006h
  5677.     ES:SI -> Event Control Block (see BX=0003h)
  5678. Return: AL = return code
  5679.         00h success
  5680.         F9h event in use
  5681.         FFh unsuccessful, event not in use
  5682. SeeAlso: BX=0005h
  5683. ----------7A----BX0007-----------------------
  5684. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE SPECIAL EVENT
  5685.     BX = 0007h
  5686.     AX = delay time
  5687.     ES:SI -> Event Control Block (see BX=0003h)
  5688. SeeAlso: BX=0006h
  5689. ----------7A----BX0008-----------------------
  5690. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERVAL MARKER
  5691.     BX = 0008h
  5692. Return: AX = interval marker in clock ticks
  5693. ----------7A----BX0009-----------------------
  5694. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERNETWORK ADDRESS
  5695.     BX = 0009h
  5696.     ES:SI -> 10-byte buffer
  5697. Return: ES:SI -> own internetwork address
  5698. SeeAlso: BX=0002h,BX=000Bh
  5699. ----------7A----BX000A-----------------------
  5700. INT 7A - Novell NetWare Low-Level API (IPX) Driver - RELINQUISH CONTROL
  5701.     BX = 000Ah
  5702. Note:    this call permits the IPX driver to do some work
  5703. ----------7A----BX000B-----------------------
  5704. INT 7A - Novell NetWare Low-Level API (IPX) Driver - DISCONNECT FROM TARGET
  5705.     BX = 000Bh
  5706.     ES:SI -> internetwork address
  5707. Note:    only use in point-to-point networks
  5708. SeeAlso: BX=0002h,BX=0009h
  5709. ----------7A----BX000C-----------------------
  5710. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5711.     BX = 000Ch
  5712.     ???
  5713. Return: ???
  5714. ----------7A----BX000D-----------------------
  5715. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5716.     BX = 000Dh
  5717.     ???
  5718. Return: ???
  5719. ----------7A----BX000E-----------------------
  5720. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5721.     BX = 000Eh
  5722.     ???
  5723. Return: ???
  5724. ----------7A----BX000F-----------------------
  5725. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL - SEND PACKET
  5726.     BX = 000Fh
  5727.     ES:SI -> Event Control Block (see BX=0003h)
  5728. Note:    similar to function 0003h, but apparently does not allow multiple
  5729.       fragments
  5730. SeeAlso: BX=0003h
  5731. ----------7A----BX0010-----------------------
  5732. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SPX INSTALLATION CHECK
  5733.     BX = 0010h
  5734.     AL = 00h
  5735. Return: AL = FFh if SPX loaded
  5736. SeeAlso: BX=0015h
  5737. ----------7A----BX0011-----------------------
  5738. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ESTABLISH SPX CONNECTION
  5739.     BX = 0011h
  5740.     AL = retry count
  5741.     AH = watchdog flag
  5742.     ES:SI -> Event Control Block (see BX=0003h)
  5743. Return: DX = assigned connection number
  5744. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  5745.       that NetWare can perform its internal packet exchanges
  5746.     The first fragment should start with a SPX header.  Fill in all
  5747.       destination addresses.
  5748. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h
  5749.  
  5750. Format of SPX header:
  5751. Offset    Size    Description
  5752.  00h    WORD    checksum (high byte first [big-endian])
  5753.  02h    WORD    length in bytes of total packet (high byte first)
  5754.  04h    BYTE    transport control
  5755.  05h    BYTE    packet type
  5756.  06h 10 BYTEs    destination internet address
  5757.  10h    WORD    destination socket (high byte first)
  5758.  12h 10 BYTEs    source internet address
  5759.  1Ch    WORD    source socket (high byte first)
  5760.  1Eh    BYTE    connection control
  5761.  1Fh    BYTE    datastreamtype
  5762.  20h    WORD    source connection ID
  5763.  22h    WORD    destination connection ID
  5764.  24h    WORD    sequence number
  5765.  26h    WORD    acknowledge number
  5766.  28h    WORD    allocation number
  5767. ----------7A----BX0012-----------------------
  5768. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX CONNECTION
  5769.     BX = 0012h
  5770.     AL = retry count
  5771.     AH = watchdog flag
  5772.     ES:SI -> Event Control Block (see BX=0003h)
  5773. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  5774.       that NetWare can perform its internal packet exchanges
  5775. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  5776. ----------7A----BX0013-----------------------
  5777. INT 7A - Novell NetWare Low-Level API (IPX) Driver - TERMINATE SPX CONNECTION
  5778.     BX = 0013h
  5779.     DX = connection ID to terminate
  5780.     ES:SI -> Event Control Block (see BX=0003h)
  5781. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  5782. ----------7A----BX0014-----------------------
  5783. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ABORT SPX CONNECTION
  5784.     BX = 0014h
  5785.     DX = connection ID to terminate
  5786. Note:    this function does not tell the other side that the connection has been
  5787.       terminated
  5788. SeeAlso: BX=0011h,BX=0013h
  5789. ----------7A----BX0015-----------------------
  5790. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET SPX STATUS
  5791.     BX = 0015h
  5792.     DX = connection ID
  5793.     ES:SI -> status buffer (see below)
  5794. Return: AL = return code
  5795.         00h connection still valid
  5796.         ES:SI -> status buffer filled
  5797. SeeAlso: BX=0010h
  5798.  
  5799. Format of status buffer:
  5800. Offset    Size    Description
  5801.  00h    BYTE    status
  5802.  01h    BYTE    flag
  5803.  02h    WORD    source connection (high byte first [big-endian])
  5804.  04h    WORD    destination connection (high byte first)
  5805.  06h    WORD    sequence number (high byte first)
  5806.  08h    WORD    acknowledge number (high byte first)
  5807.  0Ah    WORD    allocation number (high byte first)
  5808.  0Ch    WORD    remote acknowledge number (high byte first)
  5809.  0Eh    WORD    remote allocation number (high byte first)
  5810.  10h    WORD    connection socket (high byte first)
  5811.  12h  6 BYTEs    immediate node address
  5812.  18h 10 BYTEs    destination internet address
  5813.  22h    WORD    retransmit count (high byte first)
  5814.  24h    WORD    estimated roundtrip delay
  5815.  26h    WORD    retransmitted packets
  5816.  28h    WORD    suppressed packets
  5817. ----------7A----BX0016-----------------------
  5818. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND SPX PACKET
  5819.     BX = 0016h
  5820.     DX = connection ID
  5821.     ES:SI -> Event Control Block (see BX=0003h)
  5822. Note:    CX may need to be 0001h ???
  5823. SeeAlso: BX=0011h,BX=0017h
  5824. ----------7A----BX0017-----------------------
  5825. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX PACKET
  5826.     BX = 0017h
  5827.     DX = connection ID
  5828.     ES:SI -> Event Control Block (see BX=0003h)
  5829. Note:    CX may need to be 0001h ???
  5830. SeeAlso: BX=0011h,BX=0016h
  5831. ----------7A----BX0018-----------------------
  5832. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5833.     BX = 0018h
  5834.     ???
  5835. Return: ???
  5836. ----------7A----BX0019-----------------------
  5837. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5838.     BX = 0019h
  5839.     ???
  5840. Return: ???
  5841. ----------7A----BX001A-----------------------
  5842. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5843.     BX = 001Ah
  5844.     ???
  5845. Return: ???
  5846. ----------7A----BX001B-----------------------
  5847. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  5848.     BX = 001Bh
  5849.     ???
  5850. Return: ???
  5851. ----------7A04-------------------------------
  5852. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  5853.     AH = 04h
  5854.     ???
  5855. Return: ???
  5856. SeeAlso: AH=06h
  5857. ----------7A06-------------------------------
  5858. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  5859.     AH = 06h
  5860.     ???
  5861. Return: ???
  5862. SeeAlso: AH=04h
  5863. ----------7A09--BX8020-----------------------
  5864. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  5865.     AH = 09h
  5866.     BX = 8020h (synchronous request)
  5867.     CX = 0000h
  5868.     DX = ID of session manager (SESSMGR)
  5869.     AL = service
  5870.         01h get session ID
  5871.         02h get session info
  5872.         04h dettach from session
  5873.         05h attach to session
  5874.         06h get list of windows available
  5875.         07h get environment of window
  5876.         08h get 'PIF' (program information file) info
  5877.         0Ah get base window ID
  5878.         0Bh get cursor info
  5879.     ES:DI -> control block
  5880. Return: ???
  5881. ----------7A09--BX8020-----------------------
  5882. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  5883.     AH = 09h
  5884.     BX = 8020h (synchronous request)
  5885.     CX = 0000h
  5886.     DX = ID of keyboard manager
  5887.     AL = service
  5888.         01h connect to keyboard
  5889.         02h disconnect from keyboard
  5890.         03h read from keyboard
  5891.         04h send keystroke to session
  5892.         05h disable input
  5893.         06h enable input
  5894.         07h update status code
  5895.     ES:DI -> control block
  5896. Return: ???
  5897. ----------7A09--BX8020-----------------------
  5898. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  5899.     AH = 09h
  5900.     BX = 8020h (synchronous request)
  5901.     CX = 00FFh
  5902.     DX = ID of window service controller (WSCTRL)
  5903.     AL = service
  5904.         01h connect to WS control
  5905.         02h disconnect from WS control
  5906.         03h add a window
  5907.         04h change window's position on screen
  5908.         05h change window's size
  5909.         06h change window's color
  5910.         07h change window's position in the presentation space
  5911.         08h hide/unhide toggle
  5912.         09h enlarge/reduce toggle
  5913.         0Ah change screen background color
  5914.         0Bh get window's position on screen
  5915.         0Ch get window's size
  5916.         0Dh get window's color
  5917.         0Eh get window's position in the presentation space
  5918.         0Fh determine whether hidden
  5919.         10h determine whether enlarged
  5920.         11h get background color
  5921.         12h get window names
  5922.         13h delete all windows from profile
  5923.         14h pick active window
  5924.         15h redraw screen
  5925.         16h redraw window
  5926.         17h delete a window from profile
  5927.         18h get active window
  5928.         19h get active screen
  5929.         1Ah get window data
  5930.         1Bh change window data
  5931.         1Ch select active screen
  5932.     ES:DI -> control block
  5933. Return: ???
  5934. ----------7A09--BX8020-----------------------
  5935. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  5936.     AH = 09h
  5937.     BX = 8020h
  5938.     CX = 00FFh
  5939.     DX = ID of PCPSM
  5940.     AL = service
  5941.         01h define presentation space
  5942.         02h delete presentation space
  5943.         03h display presentation space
  5944.         04h position cursor in presentation space
  5945.         05h change default presentation space
  5946.     ES:DI -> control block
  5947. Return: ???
  5948. ----------7A09--BX8020-----------------------
  5949. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  5950.     AH = 09h
  5951.     BX = 8020h
  5952.     CX = 00FFh
  5953.     DX = ID of 3270EML
  5954.     AL = service
  5955.         01h connect
  5956.         02h disconnect
  5957.     ES:DI -> control block
  5958. Return: ???
  5959. ----------7A09--BX8020-----------------------
  5960. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  5961.     AH = 09h
  5962.     BX = 8020h
  5963.     CX = 00FFh
  5964.     DX = ID of OIAM
  5965.     AL = service
  5966.         01h read Operator Information Area
  5967.         02h read OIA subset
  5968.     ES:DI -> control block
  5969. Return: ???
  5970. Note: the OIA is the 25th line on the Host session
  5971. ----------7A09--BX8020-----------------------
  5972. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  5973.     AH = 09h
  5974.     BX = 8020h
  5975.     CX = 00FFh
  5976.     DX = ID of XLATE
  5977.     AL = service
  5978.         01h translate from host characters to ASCII and vice versa
  5979.         (determined by control block byte 11)
  5980.     ES:DI -> control block
  5981. Return: ???
  5982. ----------7A09--BX8020-----------------------
  5983. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  5984.     AH = 09h
  5985.     BX = 8020h
  5986.     CX = 00FFh
  5987.     DX = ID of copy service
  5988.     AL = service
  5989.         01h copy string from one presentation space to another
  5990.         02h copy block from one presentation space to another
  5991.         03h connect to PC session for copy
  5992.         04h disconnect PC session from copy
  5993.     ES:DI -> control block
  5994. Return: ???
  5995. ----------7A09--BX8020-----------------------
  5996. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  5997.     AH = 09h
  5998.     BX = 8020h
  5999.     CX = 00FFh
  6000.     ES:DI -> control block
  6001.     DX = ID of INDJQRY  
  6002.         get environment size
  6003.        = ID of INDJASY
  6004.         request DOS functions from workstation
  6005.        = ID of MEMORY
  6006.         AL = function
  6007.             01h allocate memory
  6008.             02h deallocate memory
  6009.             03h modify allocated size
  6010. Return: ???
  6011. ----------7A09-------------------------------
  6012. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  6013.     AH = 09h
  6014.     BX = request type (4000h async, 8028h synchronous)
  6015.     CX = 0000h
  6016.     DX = ID of MFIC
  6017.     AL = service
  6018.        01h connect to host
  6019.        02h disconnect from host
  6020.        03h read DFT structured data from host
  6021.        04h write DFT structured data to host
  6022.        05h create a host buffer
  6023.     ES:DI -> control block
  6024. ----------7A13-------------------------------
  6025. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  6026.     AH = 13h
  6027.     ???
  6028. Return: ???
  6029. ----------7A7A-------------------------------
  6030. INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
  6031.     AH = 7Ah
  6032.     ???
  6033. Return: AX = 0000h success
  6034.          000Eh undefined function code
  6035. Note:    this interface is normally on INT 7A but can be changed via device
  6036.       driver command line arguments
  6037. ----------7A81-------------------------------
  6038. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  6039.     AH = 81h
  6040.     ES:DI -> 8-char blank-padded gate name
  6041.         "SESSMGR ", "KEYBOARD", "WSCTRL     ", "MFIC    ", "PCPSM     ",
  6042.         "3270EML ", "COPY    ", "XLATE     ", "OIAM    ", "MEMORY     ",
  6043.         "INDJQRY ", or "INDJASY "
  6044. Return: DX = gate ID
  6045. ----------7A83-------------------------------
  6046. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  6047.     AH = 83h
  6048.     ???
  6049. Return: ???
  6050. ----------7AFDCB-----------------------------
  6051. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  6052.     AX = FDCBh
  6053. Return: DX:AX -> PCS/3270 signature block if loaded (see below)
  6054.  
  6055. Format of signature block:
  6056. Offset    Size    Description
  6057.  04h    WORD    PCS/3270 signature (5741h)
  6058.  06h    WORD    version (0501h = PCS/3270 v1.0)
  6059. ----------7AFE01-----------------------------
  6060. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  6061.     AX = FE01h
  6062.     ???
  6063. Return: ???
  6064. SeeAlso: AX=FE02h
  6065. ----------7AFE02-----------------------------
  6066. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  6067.     AX = FE02h
  6068.     ???
  6069. Return: ???
  6070. SeeAlso: AX=FE01h
  6071. ----------7AFF01-----------------------------
  6072. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  6073.     AX = FF01h
  6074.     ES:DI -> API function handler routine
  6075. Return: CX = 1200h
  6076. SeeAlso: AX=FF02h,AX=FF03h
  6077. ----------7AFF02-----------------------------
  6078. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  6079.     AX = FF02h
  6080. Return: CX = 1200h
  6081. SeeAlso: AX=FF01h
  6082. ----------7AFF03-----------------------------
  6083. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  6084.     AX = FF03h
  6085.     ES:DI -> send/receive function handler routine
  6086. Return: CX = 1200h
  6087. SeeAlso: AX=FF01h
  6088. ----------7AFF04-----------------------------
  6089. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  6090.     AX = FF04h
  6091.     ES:DI -> ???
  6092. Return: CX = 1200h
  6093. ----------7B---------------------------------
  6094. INT 7B - Btrieve API
  6095.     DS:DX -> 38-byte parameter record (see below)
  6096. Return: return code field set
  6097. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  6098.       check
  6099.  
  6100. Format of Btrieve parameter record:
  6101. Offset    Size    Description
  6102.  00h    DWORD    pointer to data buffer
  6103.  04h    WORD    data buffer length
  6104.  06h    DWORD    pointer to 90-byte record containing positioning info
  6105.         (should be same for all calls for same file)
  6106.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  6107.         (should be same for all calls for same file)
  6108.  0Eh    WORD    function code (see below)
  6109.  10h    DWORD    pointer to file name/key buffer
  6110.  14h    BYTE    key length
  6111.  15h    BYTE    key number
  6112.  16h    DWORD    pointer to status code (see below)
  6113.  1Ah    WORD    interface code (version specific)
  6114.  
  6115. Values for function code:
  6116.  00h open
  6117.  01h close
  6118.  02h insert
  6119.  03h update
  6120.  04h delete
  6121.  05h get_equal
  6122.  06h get_next
  6123.  07h get_prev
  6124.  08h get_greater
  6125.  09h get_gr_eql
  6126.  0Ah get_less
  6127.  0Bh get_less_eq
  6128.  0Ch get_first
  6129.  0Dh get_last
  6130.  0Eh create
  6131.  0Fh stat
  6132.  10h extend
  6133.  11h set_dir: set directory information
  6134.  12h get_dir: get directory information
  6135.  13h begin_trans
  6136.  14h end_trans
  6137.  15h abort_trans
  6138.  16h get_pos: get record position number
  6139.  17h get_direct: get data by sending record position
  6140.  18h step_direct
  6141.  19h stop
  6142.  1Ah version
  6143.  1Bh unlock
  6144.  1Ch reset
  6145.  1Dh set owner
  6146.  1Eh clear owner
  6147.  1Fh create supplemental index
  6148.  20h drop supplemental index
  6149.  21h step first
  6150.  22h step last
  6151.  23h step next
  6152.  31h ???
  6153.  37h ???
  6154.  38h ???
  6155.  39h ???
  6156.  3Ah ???
  6157.  3Bh ???
  6158.  3Ch ???
  6159.  3Dh ???
  6160.  3Eh ???
  6161.  3Fh ???
  6162.  add 100 (64h) for a single-record wait lock (automatically released on next
  6163.         get)
  6164.  add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
  6165.         or 55h if record already locked)
  6166.  add 300 (12Ch) for a multiple-record wait lock (not released until unlock
  6167.         called)
  6168.  add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
  6169.         54h or 55h if record already locked)
  6170.  
  6171. Values for status code:
  6172.  00h successful
  6173.  01h invalid operation
  6174.  02h I/O error
  6175.  03h file not open
  6176.  04h key value not found
  6177.  05h duplicate key value
  6178.  06h invalid key number
  6179.  07h different key number
  6180.  08h invalid positioning
  6181.  09h end of file
  6182.  0Ah modifiable key value error
  6183.  0Bh invalid file name
  6184.  0Ch file not found
  6185.  0Dh extended file error
  6186.  0Eh pre-image open error
  6187.  0Fh pre-image I/O error
  6188.  10h expansion error
  6189.  11h close error
  6190.  12h disk full
  6191.  13h unrecoverable error
  6192.  14h record manager inactive
  6193.  15h key buffer too short
  6194.  16h data buffer length overrun
  6195.  17h position block length
  6196.  18h page size error
  6197.  19h create I/O error
  6198.  1Ah number of keys
  6199.  1Bh invalid key position
  6200.  1Ch invalid record length
  6201.  1Dh invalid key length
  6202.  1Eh not a Btrieve file
  6203.  1Fh file already extended
  6204.  20h extended I/O error
  6205.  22h invalid extension name
  6206.  23h directory error
  6207.  24h transaction error
  6208.  25h transaction is active
  6209.  26h transaction control file I/O error
  6210.  27h end/abort transaction error
  6211.  28h transaction max files
  6212.  29h operation not allowed
  6213.  2Ah incomplete accelerated access
  6214.  2Bh invalid record address
  6215.  2Ch null key path
  6216.  2Dh inconsistent key flags
  6217.  2Eh access to file denied
  6218.  2Fh maximum open files
  6219.  30h invalid alternate sequence definition
  6220.  31h key type error
  6221.  32h owner already set
  6222.  33h invalid owner
  6223.  34h error writing cache
  6224.  35h invalid interface
  6225.  36h variable page error
  6226.  37h autoincrement error
  6227.  38h incomplete index
  6228.  39h expanded memory error
  6229.  3Ah compression buffer too short
  6230.  3Bh file already exists
  6231.  50h conflict
  6232.  51h lock error
  6233.  52h lost position
  6234.  53h read outside transaction
  6235.  54h record in use
  6236.  55h file in use
  6237.  56h file table full
  6238.  57h handle table full
  6239.  58h incompatible open mode
  6240.  5Dh incompatible lock type
  6241.  5Eh permission error
  6242. ----------7B---------------------------------
  6243. INT 7B - Eicon Access API (3270/5250 gateways)
  6244. ----------7B---------------------------------
  6245. INT 7B - AutoCAD ADI INTERFACE
  6246.     AX = function
  6247.         0000h output blank line
  6248.         other ???
  6249. Return: ???
  6250. Note:    called by AutoCAD to perform its output
  6251. SeeAlso: INT 7A"AutoCAD"
  6252. ----------7B---------------------------------
  6253. INT 7B - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ3
  6254. Note:    this vector is overwritten when GO32 starts but is not restored
  6255. SeeAlso: INT 0B,INT 7A"GO32",INT 7C"GO32"
  6256. ----------7C---------------------------------
  6257. INT 7C - IBM REXX88PC command language
  6258.     ???
  6259. ----------7C---------------------------------
  6260. INT 7C - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ4
  6261. Note:    this vector is overwritten when GO32 starts but is not restored
  6262. SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
  6263. ----------7D---------------------------------
  6264. INT 7D - [proposed] - ALTERNATE MULTIPLEX INTERRUPT
  6265. Note:    this interface proposal has been moved to INT 2D; there are no known
  6266.       implementations on INT 7D
  6267. SeeAlso: INT 2D, INT 2F
  6268. ----------7D---------------------------------
  6269. INT 7D - YTERM 1.4 - CLOCK SUPPORT
  6270. SeeAlso: INT 7E"YTERM"
  6271. ----------7D---------------------------------
  6272. INT 7D - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ5
  6273. Note:    this vector is overwritten when GO32 starts but is not restored
  6274. SeeAlso: INT 0D,INT 7C"GO32",INT 7E"GO32"
  6275. ----------7E---------------------------------
  6276. INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
  6277. ----------7E---------------------------------
  6278. INT 7E - YTERM 1.4 - ???
  6279. SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
  6280. ----------7E---------------------------------
  6281. INT 7E - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ6
  6282. Note:    this vector is overwritten when GO32 starts but is not restored
  6283. SeeAlso: INT 0E,INT 7D"GO32",INT 7F"GO32"
  6284. ----------7F---------------------------------
  6285. INT 7F - IBM XGA - ???
  6286. ----------7F---------------------------------
  6287. INT 7F - Halo88 - API
  6288.     BX = function
  6289.         64h arc
  6290.         65h bar
  6291.         66h box
  6292.         67h circle
  6293.         68h clr
  6294.         69h default hatch style
  6295.         6Ah default line style
  6296.         6Bh delhcur
  6297.         6Ch delln / deltcur
  6298.         6Dh ellipse
  6299.         6Eh fill
  6300.         6Fh flood
  6301.         70h flood2
  6302.         71h init graphics
  6303.         72h init hcur
  6304.         73h init marker
  6305.         74h init tcur
  6306.         75h inqarc
  6307.         76h inqbknd
  6308.         77h inqclr
  6309.         78h inqerr
  6310.         79h inqgcur
  6311.         7Ah inqhcur
  6312.         7Bh inqmarker
  6313.         7Dh inqtcur
  6314.         7Eh inqtext
  6315.         7Fh lnabs
  6316.         80h lnrel
  6317.         81h markerabs
  6318.         82h markerrel
  6319.         83h moveabs
  6320.         84h movehcurabs
  6321.         85h movehcurrel
  6322.         86h moverel
  6323.         87h movetcurabs
  6324.         88h movetcurrel
  6325.         89h movefrom
  6326.         8Ah moveto
  6327.         8Bh pie
  6328.         8Ch polylnabs
  6329.         8Dh polylnrel
  6330.         8Eh ptabs
  6331.         8Fh ptrel
  6332.         91h setasp
  6333.         92h set color
  6334.         93h set font
  6335.         94h set hatch style
  6336.         95h set line style
  6337.         97h settext
  6338.         98h set text color
  6339.         99h btext
  6340.         9Ah setseg
  6341.         9Bh display
  6342.         9Ch setscreen
  6343.         9Eh close graphics
  6344.         9Fh ftinit
  6345.         A0h ftlocate
  6346.         A1h ftext
  6347.         A5h set viewport
  6348.         A6h set window
  6349.         A7h set world
  6350.         AAh ftcolor
  6351.         ACh initlp
  6352.         ADh inqasp
  6353.         AEh inqdev
  6354.         AFh inqdisplay
  6355.         B0h inqft
  6356.         B1h inqftcolor
  6357.         B2h inqinterlace
  6358.         B3h inqlpa
  6359.         B4h inqlpg
  6360.         B5h inqmode
  6361.         B6h inqscreen
  6362.         B7h inqversion
  6363.         B8h roam
  6364.         B9h scroll
  6365.         BAh setieee
  6366.         BBh set interlace
  6367.         BCh shift
  6368.         BDh start graphics
  6369.         BEh vpan
  6370.         CBh gwrite
  6371.         CCh gread
  6372.         CDh setxor
  6373.         CEh rbox
  6374.         CFh rcir
  6375.         D0h rlnabs
  6376.         D1h rlnrel
  6377.         D2h delbox
  6378.         D3h delcir
  6379.         D5h setseg2
  6380.         DCh worldoff
  6381.         DDh mapwtod
  6382.         DEh mapdtow
  6383.         DFh mapwton
  6384.         E0h mapntow
  6385.         E1h mapdton
  6386.         E2h mapntod
  6387.         E3h inqworld
  6388.         E4h inqviewport
  6389.         E5h set line width
  6390.         E6h lnjoint
  6391.         E7h set locator
  6392.         E8h read locator
  6393.         E9h setdev
  6394.         EBh setstext
  6395.         ECh setstclr
  6396.         EDh setstang
  6397.         EEh stext
  6398.         EFh inqstext
  6399.         F0h setdegree
  6400.         F1h inqstsize
  6401.         F2h polyfabs
  6402.         F3h polyfrel
  6403.         F4h inqdrange
  6404.         F5h inqstang
  6405.         F6h orglocator
  6406.         F7h inqlocator
  6407.         F8h inqarea
  6408.         F9h setipal
  6409.         FAh setborder
  6410.         FBh inqcrange
  6411.         FEh setclip
  6412.         FFh fcir
  6413.            100h setcrange
  6414.            101h setdrange
  6415.            102h setlattr
  6416.            103h polycabs
  6417.            104h polycrel
  6418.            108h memcom
  6419.            109h memexp
  6420.            10Ah memmov
  6421.            10Eh movefx
  6422.            10Fh movetx
  6423.            110h inqrgb
  6424.            111h save image
  6425.            112h restore image
  6426.            113h setapal
  6427.            114h setxpal
  6428.            118h inqtsize
  6429.            12Eh gprint
  6430.            130h setprn
  6431.            131h setpattr
  6432.            133h setbattr
  6433.            135h pexpand
  6434.            136h ptnorm
  6435.            137h pfnorm
  6436.            13Bh inqprn
  6437.            13Ch lopen
  6438.            13Dh lclose
  6439.            13Eh lappend
  6440.            13Fh lrecord
  6441.            140h lswitch
  6442.            142h inqfun
  6443.            15Dh lsetup
  6444.            15Eh lrest
  6445.            15Fh lsave
  6446.     additional parameters on stack
  6447. Return: ???
  6448. Notes:    Halo88 is a suite of graphics routines
  6449.     according to Stuart Kemp, the code appears to make no provisions for
  6450.        chaining
  6451. ----------7F---------------------------------
  6452. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  6453.     AL = request ID
  6454.         01h "Request"/"RequestDirect"
  6455.         ES:BX -> pRq
  6456.         DX ignored
  6457.         04h "Wait"
  6458.         ES:BX -> ppMsgRet
  6459.         DX = exchange
  6460.         05h "AllocExch"
  6461.         ES:BX -> pExchRet
  6462.         06h "DeAllocExch"
  6463.         DX = exchange
  6464.         07h "Check"
  6465.         ES:BX -> ppMsgRet
  6466.         DX = exchange
  6467.     CX = 4354h ('CT')
  6468. Return: AX = status
  6469.         0000h successful
  6470. ----------7F---------------------------------
  6471. INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
  6472. Notes:    the words at C800h:0000h and C800h:0002h will both be 584Eh if this
  6473.       multitasking system is present
  6474.     NTNX allows its API to be placed on a different interrupt than 7Fh at
  6475.       load time.  To determine the actual vector used, open the device
  6476.       "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  6477.       INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  6478.       be the actual interrupt number being used; the other interrupts may
  6479.       be found with INT 7F/AH=09h/CL=03h
  6480. ----------7F---------------------------------
  6481. INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
  6482. Note:    a program may determine that it is running on an ANSK Slave by checking
  6483.       the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  6484.       address is RAM, and should not be written.  However, the above check
  6485.       will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  6486.       device driver
  6487. ----------7F---------------------------------
  6488. INT 7F - Telebit ACS SERIAL I/O
  6489.     ES:SI-> parameter block
  6490. Return: CF set on error
  6491.     CF clear on success
  6492. Notes:    the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
  6493.       handler; this serves as the installation check
  6494.  
  6495. Format of Telebit ACS parameter block:
  6496. Offset    Size    Description
  6497.  00h    BYTE    command
  6498.             3Ch status
  6499.             3Dh connect
  6500.             3Eh disconnect
  6501.             3Fh read
  6502.             40h data/command write
  6503.             41h clear receive buffer
  6504.             42h get configuration
  6505.             43h get receiver status
  6506.             44h raw write
  6507.             45h search servers
  6508.             46h set transmit buffer size
  6509.  01h    BYTE    gateway number
  6510.  02h    BYTE    reserved
  6511.  03h    BYTE    port
  6512.  04h 17 BYTES    auxiliary buffer
  6513.  15h    BYTE    session
  6514.  16h    WORD    count of bytes passed to API
  6515.  18h    DWORD    buffer pointer passed to/from API
  6516.  1Ch    WORD    count of bytes passed from API
  6517.  1Eh    BYTE    return code (see below)
  6518.  
  6519. Values for return code:
  6520.  00h - success
  6521.  01h - invalid session
  6522.  05h - servername invalid
  6523.  06h - netware fileserver bindery is locked
  6524.  07h communication server not active
  6525.  08h general failure in netware fileserver
  6526.  09h not logged into a fileserver
  6527.  10h connection table full
  6528.  11h no response from communication server
  6529.  12h connection attempt terminated abnormally
  6530.  13h connection refused - no sessions available
  6531.  14h gw_no/port already in use
  6532.  15h invalid connection response
  6533.  16h port invalid
  6534.  17h incorrect version in server response
  6535.  18h gw_no/port combination not configured
  6536.  19h initialization has not been completed
  6537.  20h no more sockets are available
  6538.  21h no active poolname
  6539.  23h FATAL internal interface error
  6540.  24h registration of host workstation failed - name is already in used
  6541.  25h registration of host workstation failed - workstation name table full
  6542.  26h registration of host workstation failed - only one session may be
  6543.     registered for dial-in
  6544.  FFh telebit acs api is busy - retry later
  6545. ----------7F---------------------------------
  6546. INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
  6547. Notes:    the installation check consists of checking for the signature "Lynn"
  6548.       in the four bytes preceding the interrupt handler; if present, the
  6549.       current program is running as a DOS task on a non-dedicated NetWare
  6550.       2.x file server.
  6551.     Before placing the server into "console" mode, it is recommended that
  6552.       NetWare broadcast messages be disabled with INT 21/AX=DE00h.
  6553. SeeAlso: INT 21/AX=DE00h
  6554. ----------7F---------------------------------
  6555. INT 7F - YTERM - ???
  6556. SeeAlso: INT 7E"YTERM"
  6557. ----------7F---------------------------------
  6558. INT 7F - DJGPP GO32 DOS EXTENDER - RELOCATED IRQ7
  6559. Note:    this vector is overwritten when GO32 starts but is not restored
  6560. SeeAlso: INT 0F,INT 7E"GO32"
  6561. ----------7F00-------------------------------
  6562. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
  6563.     AH = 00h
  6564.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6565. Return: AL = status
  6566.         00h successful
  6567.         01h invalid function
  6568.         02h semaphore already locked
  6569.         03h unable to lock semaphore
  6570.         04h semaphore space exhausted
  6571.         05h host/target PC did not respond (NTNX)
  6572.     AH = semaphore owner if status=02h
  6573. SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
  6574. ----------7F01-------------------------------
  6575. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
  6576.     AH = 01h
  6577.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6578. Return: AL = status (see AH=00h)
  6579.     AH = semaphore owner if status=02h
  6580. SeeAlso: AH=00h,AH=02h,AH=41h
  6581. ----------7F0104BX0000-----------------------
  6582. INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
  6583.     AX = 0104h (HLLAPI gate ID)
  6584.     BX = 0000h
  6585.     DS:SI -> parameter control block (see below)
  6586. Return: parameter control block updated
  6587.  
  6588. Format of parameter control block:
  6589. Offset    Size    Description
  6590.  00h  3 BYTEs    signature = 'PCB'
  6591.  03h    BYTE    function number (see below)
  6592.  04h    WORD    segment of control string
  6593.  06h    WORD    offset of control string
  6594.  08h    WORD    length of control string, unless explicit end-of-str char set
  6595.  0Ah    BYTE    unused (IBM)
  6596.         ControlString[0] (Rabbit)
  6597.  0Bh    WORD    return code
  6598.  0Dh    WORD    maximum length of control string (IBM)
  6599.         unused (Rabbit)
  6600.  
  6601. Values for HLLAPI function number:
  6602.  00h    Query system (Attachmate implementation only)
  6603.  01h    Connect presentation space
  6604.  02h    Disconnect presentation space
  6605.  03h    Send string of keystrokes as if typed from keyboard
  6606.  04h    Wait ~60s, returns status of presentation space
  6607.  05h    Copy current presentation space into a user-defined buffer
  6608.  06h    Search presentation space for first occurrence of a specified string
  6609.  07h    Query cursor location in current presentation space
  6610.  08h    Copy part or all of current presentation space into user buffer
  6611.  09h    Set session parameters; parameters vary by vendor
  6612.  0Ah    Get info on sessions currently connected
  6613.  0Bh    Lock current presentation space
  6614.  0Ch    Unlock previously locked presentation space
  6615.  0Dh    Return copy of operator info area (OIA) of current presentation space
  6616.  0Eh    get attribute byte for given position in the current presentation space
  6617.  0Fh    copy string of characters to the current presentation space
  6618.  10h    workstation control functions
  6619.  11h    storage manager functions, intended primarily for BASIC applications
  6620.     (not implemented by Rabbit)
  6621.  12h    set delay period in half-second intervals
  6622.  14h    get info on level of workstation support used
  6623.  15h    reset session parameters to default values
  6624.  16h    get detailed info on the current session
  6625.  17h    start host notification to application on presentation sp or OIA update
  6626.  18h    check host update when host notification enabled
  6627.  19h    stop host notification
  6628.  1Eh    search field within current presentation space for string
  6629.  1Fh    get first positionof a selected field in the current presentation space
  6630.  20h    get length of specified field
  6631.  21h    copy string into a specified field
  6632.  22h    copy specified field into a user-defined buffer
  6633.  23h    create alternate presentation space (IBM only), don't use with BASIC
  6634.  24h    switch to alternate presentation space (IBM only), not with BASIC
  6635.  25h    display cursor in specified area (IBM only), don't use with BASIC
  6636.  26h    display alternate presentation space (IBM only), don't use with BASIC
  6637.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  6638.  32h    start intercepting keystrokes to allow filtering
  6639.  33h    get keystrokes after turning on interception
  6640.  34h    notify operator when keystroke rejected by filter subroutine
  6641.  35h    stop intercepting keystrokes
  6642.  5Ah    send file
  6643.  5Bh    receive file
  6644.  5Ch    run a program (not implemented by Rabbit)
  6645.  5Dh    execute DOS command (not implemented by Rabbit)
  6646.  63h    change presentation space position to PC display row/col or vice versa
  6647.  FFh    Get info on DCA implementation
  6648.  
  6649. Values for LLAPI function number:
  6650.  80h    initialize LLAPI (internal call)
  6651.  83h    set Session ID (one-character ID)
  6652.  84h    read Session ID (one-character ID)
  6653.  85h    lock 327x keyboard
  6654.  86h    unlock 327x keyboard
  6655.  87h    wait for Clear to Send
  6656.  88h    type ASCII character
  6657.  89h    type 327x key
  6658.  8Ah    read keyboard lock state
  6659.  8Fh    force screen update
  6660.  90h    view session
  6661.  91h    relinquish (suspend foreground until background becomes idle)
  6662.  92h    poke screen character
  6663.  93h    poke translated character
  6664.  94h    peek screen character
  6665.  95h    peek translated character
  6666.  96h    set cursor position
  6667.  97h    send scan code (Rabbit only)
  6668.  98h    synchronize (returns after keystroke queue empty)
  6669.  99h    type PC key (Rabbit only)
  6670.  
  6671. Session Parameters for function 09h:
  6672.  ASCII        ??? (Rabbit only)
  6673.  ATTRIB        return attributes in hex
  6674.  NOATTRIB    return attributes as blanks
  6675.  CONPHYS    make physical connection
  6676.  CONLOG        only make logical connection
  6677.  EAB        copy extended attribute bytes along with data 
  6678.  NOEAB        copy data only
  6679.  ESC=n        set escape character to "n" (default '@')
  6680.  EOT=n        set end of string character (default 00h)
  6681.  FPAUSE        full-duration pause
  6682.  FTNOWAIT    return immediately from functions 5Ah and 5Bh (Rabbit only)
  6683.  FTWAIT        wait for file transfer to complete (Rabbit only)
  6684.  IPAUSE        interruptible pause
  6685.  RABESC        ??? (Rabbit only)
  6686.  NORABESC    ??? (Rabbit only)
  6687.  SCANCODE    ??? (Rabbit only)
  6688.  STRLEN        use explicit string lengths
  6689.  STREOT        use terminated strings
  6690.  SRCHALL    search entire presentation space
  6691.  SRCHFROM    search from specified offset
  6692.  SRCHFRWD    search forward from position 1
  6693.  SRCHBKWD    search backward from last position in presentation space
  6694.  TIMEOUT=n    ??? (Rabbit only)
  6695.  TWAIT        wait specified time for keyboard ready
  6696.  LWAIT        wait until keyboard ready
  6697.  NWAIT        no wait
  6698.  TRON        enable tracing
  6699.  TROFF        disable tracing
  6700.  AUTORESET    send reset before sending keys with function 03h
  6701.  NORESET    don't send reset
  6702.  QUIET        don't display messages sent with INT 21/AH=09h
  6703.  NOQUIET    allow messages to be displayed
  6704.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  6705.  XLATE        translate extended attribute bytes
  6706.  NOXLATE    don't translate
  6707.  NEWRET        use HLLAPI v3.0 return code conventions
  6708.  OLDRET        use HLLAPI v2.0 return code conventions
  6709. ----------7F0105-----------------------------
  6710. INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  6711.     AX = 0105h get 8514/A entry points
  6712. Return: CF set on error
  6713.     CF clear if successful
  6714.         CX:DX -> array of FAR pointers to entry points
  6715. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  6716.       and then performing a FAR call via the appropriate vector of the
  6717.       entry point array
  6718.  
  6719. Function numbers: (do FAR call via entry_points+4*function)
  6720.  08h    HOPEN
  6721.  10h    HINT
  6722.  13h    HLDPAL
  6723.  15h    HBBW
  6724.  17h    HBBR
  6725.  18h    HBBCHN
  6726.  1Dh    HQMODE
  6727.  22h    HCLOSE
  6728.  30h    HINIT
  6729.  31h    HSYNC
  6730.  39h    HSPAL
  6731.  3Ah    HRPAL 
  6732. ----------7F02-------------------------------
  6733. INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
  6734.     AH = 02h
  6735.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6736. Return: AL = status
  6737.         00h successful
  6738.         01h invalid function
  6739.         02h semaphore locked by other user
  6740.         AH = semaphore owner
  6741.         03h unable to unlock semaphore
  6742.         05h target PC did not respond
  6743. SeeAlso: AH=00h,AH=01h,AH=42h
  6744. ----------7F03-------------------------------
  6745. INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
  6746.     AH = 03h
  6747. Return: AL = user number
  6748.     AH = machine number (MW386)
  6749. Note:    this function call is the recommended method for a CPU-bound process to
  6750.       prevent its priority from being lowered
  6751. SeeAlso: AH=04h,AH=05h,AH=A1h
  6752. ----------7F04-------------------------------
  6753. INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
  6754.     AH = 04h
  6755. Return: AL = total number of users on currrent machine (MW386)
  6756.     AL = number of slaves on system (NTNX)
  6757. SeeAlso: AH=03h
  6758. ----------7F05-------------------------------
  6759. INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
  6760.     AH = 05h
  6761.     AL = function
  6762.         00h lock system (disable slave services)
  6763.         01h unlock system
  6764.         02h enable spooler
  6765.         03h disable spooler
  6766.         04h enable slave timer update
  6767.         05h disable slave timer update
  6768.         06h enable form feeds
  6769.         07h disable form feeds
  6770. SeeAlso: INT 17/AH=A4h
  6771. ----------7F05-------------------------------
  6772. INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
  6773.     AH = 05h
  6774.     DX:DI -> buffer for user information record (see below)
  6775. Notes:    MW386 provides this function for backward compatibility only, and sets
  6776.       many of the fields to zero because they are meaningless under MW386
  6777.     this function has no effect when called by the host (user 0)
  6778. SeeAlso: AH=03h
  6779.  
  6780. Format of user information record:
  6781. Offset    Size    Description
  6782.  00h    WORD    segment of video RAM
  6783.  02h    WORD    segment of secondary copy of video RAM
  6784.  04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
  6785.         flag nonzero if update needed
  6786.  06h    WORD    video NMI enable port
  6787.         (not used by MW386, set to 0000h)
  6788.  08h    WORD    video NMI disable port
  6789.         (not used by MW386, set to 0000h)
  6790.  0Ah    BYTE    processor type
  6791.         00h 8088
  6792.         01h V20
  6793.         02h 8086
  6794.         03h V30
  6795.         06h 80386
  6796.  0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
  6797.         (not used by MW386, set to 0000h)
  6798.  0Dh    WORD    offset of terminal driver
  6799.         (not used by MW386, set to 0000h)
  6800.  0Fh    BYTE    port for console I/O
  6801.         (not used by MW386, set to 0000h)
  6802.  10h    WORD    offset of processor communication busy flag
  6803.         bit 7 set when slave communicating with host
  6804.  12h    WORD    pointer to FAR NX system call
  6805.         (not used by MW386, set to 0000h)
  6806.  14h    WORD    offset of 16-byte user configuration record (see AH=38h)
  6807.  16h    WORD    offset of command/status word
  6808.  18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
  6809.         nonzero if screen must be repainted
  6810.  1Ah    WORD    offset of screen repaint flag
  6811.  1Ch    WORD    pointer to NEAR NX system call
  6812.         (not used by MW386, set to 0000h)
  6813.  1Eh    WORD    offset for intercept flags
  6814.         (not used by MW386, set to 0000h)
  6815.         intercept flag = FFh if MSDOS intercepts should be disabled
  6816.  20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
  6817.         lock flag = FFh if backgrnd screen updates should be suspended
  6818.  22h 26 BYTEs    reserved
  6819. ----------7F06-------------------------------
  6820. INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
  6821.     AH = 06h
  6822.     AL = drive number (1=A:, 2=B:, etc)
  6823.     ES:DI -> drive info record (see below)
  6824. Return: AX = status
  6825.         0000h successful
  6826.         ES:DI buffer filled
  6827.         0001h not shared drive
  6828.  
  6829. Format of drive info record:
  6830. Offset    Size    Description
  6831.  00h    WORD    segment of drive IO-REQUEST structure (MSDOS DPB)
  6832.  02h    WORD    segment of allocation map (owner table)
  6833.         one byte per FAT entry, containing user ID owning that entry
  6834.  04h    WORD    segment of master FAT for drive (copy of FAT on disk)
  6835.  06h    WORD    pointer to configuration file
  6836.  08h    WORD    total number of clusters
  6837.  0Ah    WORD    bytes per sector
  6838.  0Ch    WORD    sectors per cluster
  6839.  0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
  6840. ----------7F06-------------------------------
  6841. INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
  6842.     AH = 06h
  6843.     DL = drive number (1=A:,2=B:,etc)
  6844.     CX = number of clusters to allocate
  6845. Return: AH = status
  6846.         00h successful
  6847.         CX = number of clusters still free
  6848.         10h invalid shared drive request
  6849.         CL = first and second shared drives
  6850.         11h invalid cluster count (must be 01h-FFh)
  6851. ----------7F07-------------------------------
  6852. INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
  6853.     AH = 07h
  6854. Return: ES:DI -> shared drive list (see below)
  6855. Note:    MW386 considers all fixed disks to be shared drives; only C and D will
  6856.       be returned as shared
  6857.  
  6858. Format of shared drive list:
  6859. Offset    Size    Description
  6860.  00h    BYTE    string length
  6861.  01h    BYTE    number of shared drives
  6862.  02h  N BYTEs    one byte per shared drive
  6863. ----------7F08-------------------------------
  6864. INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
  6865.     AH = 08h
  6866.     CL = function
  6867.         00h get original interrupt vector
  6868.         01h get Network Executive interrrupt
  6869.     AL = interrupt number
  6870.     DX:SI -> DWORD to hold interrupt vector
  6871. Return: AL = status
  6872.         00h successful
  6873.         01h interrupt vector not used by network executive
  6874.         02h invalid subfunction
  6875. Note:    the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
  6876.       1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
  6877. SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
  6878. ----------7F08--CL02-------------------------
  6879. INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
  6880.     AH = 08h
  6881.     CL = 02h
  6882.     DX = timeout in seconds
  6883. Return: AL = status
  6884.         00h successful
  6885.         02h invalid subfunction
  6886. ----------7F09-------------------------------
  6887. INT 7F - MultiLink Advanced - SET TASK PRIORITY
  6888.     AH = 09h
  6889.     AL = priority (0-7)
  6890. Note:    the installation check consists of ensuring that the interrupt vector
  6891.       is not pointing at segment 0000h, then checking whether the byte
  6892.       at offset 0000h in the interrupt handler's segment is E9h
  6893. ----------7F09-------------------------------
  6894. INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
  6895.     AH = 09h
  6896.     CL = function
  6897.         00h enable checking of RTNX.MUD file
  6898.         01h disable RTNX.MUD checking
  6899. ----------7F09--CL02-------------------------
  6900. INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
  6901.     AH = 09h
  6902.     CL = 02h
  6903. Note:    in dedicated mode, the host will only poll for I/O requests from the
  6904.       slave processors, and not provide workstation services
  6905. ----------7F09--CL03-------------------------
  6906. INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
  6907.     AH = 09h
  6908.     CL = 03h
  6909.     AL = default interrupt number (67h,7Fh,etc)
  6910. Return:    CL = actual interrupt which handles specified interrupt's calls
  6911. SeeAlso: AH=08h
  6912. ----------7F0A--CL00-------------------------
  6913. INT 7F - Alloy NTNX - GET SYSTEM FLAGS
  6914.     AH = 0Ah
  6915.     CL = 00h
  6916.     ES:DI -> buffer for system flags (see below)
  6917. Return: ES:DI buffer filled
  6918. Notes:    on a slave, only the NX_Busy flag is returned
  6919.     all three flags are at fixed positions, so this function only needs to
  6920.       be called once
  6921.     an interrupt handler should only perform DOS or device accesses when
  6922.       all three flags are 00h
  6923.  
  6924. Format of system flags:
  6925. Offset    Size    Description
  6926.  00h    DWORD    pointer to NX_Busy flag (nonzero when communicating with users)
  6927.  04h    DWORD    pointer to device driver busy flag
  6928.  08h    DWORD    pointer to InTimer flag
  6929. ----------7F0B--CL02-------------------------
  6930. INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
  6931.     AH = 0Bh
  6932.     CL = 02h
  6933.     AL = slave ID number
  6934.     CH = DOS to activate
  6935.         00h graphics DOS
  6936.         01h character DOS
  6937. Return: AL = status
  6938.         00h successful
  6939.         01h nothing done, proper DOS type already loaded
  6940. ----------7F10--CL00-------------------------
  6941. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
  6942.     AH = 10h
  6943.     CL = 00h
  6944.     AL = channel number
  6945.     DX:DI -> channel buffer
  6946. Return: AL = status
  6947.         00h successful
  6948.         01h busy
  6949.         02h channel range error (not 00h-3Fh)
  6950.         03h invalid subfunction
  6951.         0Dh unable to open
  6952. Note:    may not be invoked from within a hardware interrupt handler
  6953. SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
  6954. ----------7F10--CL01-------------------------
  6955. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
  6956.     AH = 10h
  6957.     CL = 01h
  6958.     AL = channel number
  6959. Return: AL = status
  6960.         00h successful
  6961.         01h busy
  6962.         02h channel range error (not 00h-3Fh)
  6963.         03h invalid subfunction
  6964.         0Ah channel not open
  6965. Note:    may not be invoked from within a hardware interrupt handler
  6966. SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
  6967. ----------7F10--CL02-------------------------
  6968. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
  6969.     AH = 10h
  6970.     CL = 02h
  6971.     AL = channel number
  6972. Return: AL = status
  6973.         00h successful
  6974.         01h busy
  6975.         02h channel range error (not 00h-3Fh)
  6976.         03h invalid subfunction
  6977.         0Ah channel not open
  6978.         0Ch channel already locked
  6979. Note:    may not be invoked from within a hardware interrupt handler
  6980. SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
  6981. ----------7F10--CL03-------------------------
  6982. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
  6983.     AH = 10h
  6984.     CL = 03h
  6985.     AL = channel number
  6986. Return: AL = status (see AH=10h/CL=02h)
  6987. Notes:    should only be used on channels locked with AH=10h/CL=02h, not on those
  6988.       locked by receipt of a datagram
  6989.     may not be invoked from within a hardware interrupt handler
  6990. SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
  6991. ----------7F10--CL04-------------------------
  6992. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
  6993.     AH = 10h
  6994.     CL = 04h
  6995.     AL = channel number
  6996. Return: AL = status
  6997.         00h successful
  6998.         01h busy
  6999.         02h channel range error (not 00h-3Fh)
  7000.         03h invalid subfunction
  7001. Notes:    unlocks buffer after received datagram has been processed
  7002.     may not be invoked from within a hardware interrupt handler
  7003. SeeAlso: AH=10h/CL=00h
  7004. ----------7F10--CL05-------------------------
  7005. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
  7006.     AH = 10h
  7007.     CL = 05h
  7008. Return: AL = status
  7009.         00h successful
  7010.         01h busy
  7011.         02h channel range error (not 00h-3Fh)
  7012.         03h invalid subfunction
  7013. Notes:    clears all pending datagrams and clears buffer pointers before closing
  7014.       the channels
  7015.     may not be invoked from within a hardware interrupt handler
  7016. SeeAlso: AH=10h/CL=01h
  7017. ----------7F10--CL06-------------------------
  7018. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
  7019.     AH = 10h
  7020.     CL = 06h
  7021. Return: AL = status
  7022.         00h successful
  7023.         01h busy
  7024.         02h channel range error (not 00h-3Fh)
  7025.         03h invalid subfunction
  7026. Note:    may not be invoked from within a hardware interrupt handler
  7027. SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
  7028. ----------7F10--CL07-------------------------
  7029. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
  7030.     AH = 10h
  7031.     CL = 07h
  7032. Return: AL = status
  7033.         00h successful
  7034.         01h busy
  7035.         02h channel range error (not 00h-3Fh)
  7036.         03h invalid subfunction
  7037. Notes:    unlocks all locked channels which have no pending datagrams
  7038.     may not be invoked from within a hardware interrupt handler
  7039. SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
  7040. ----------7F10--CL08-------------------------
  7041. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
  7042.     AH = 10h
  7043.     CL = 08h
  7044.     DX = maximum channel number to lock
  7045. Return: AL = status
  7046.         00h successful
  7047.         01h busy
  7048.         02h channel range error (not 00h-3Fh)
  7049.         03h invalid subfunction
  7050. Notes:    locks channels numbered 00h through the value in DX
  7051.     may not be invoked from within a hardware interrupt handler
  7052. SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
  7053. ----------7F10--CL09-------------------------
  7054. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
  7055.     AH = 10h
  7056.     CL = 09h
  7057.     DX = maximum channel number to unlock
  7058. Return: AL = status
  7059.         00h successful
  7060.         01h busy
  7061.         02h channel range error (not 00h-3Fh)
  7062.         03h invalid subfunction
  7063. Notes:    unlocks channels numbered 00h through the value in DX
  7064.     may not be invoked from within a hardware interrupt handler
  7065. SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
  7066. ----------7F11-------------------------------
  7067. INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
  7068.     AH = 11h
  7069.     DX:SI -> request block (see below)
  7070. Return: AL = status
  7071.         00h successful
  7072.         01h busy
  7073.         02h channel range error (not 00h-3Fh)
  7074.         03h invalid subfunction
  7075.         0Ah packet too large (or <2 bytes if NTNX)
  7076.         0Bh can't send packet to itself
  7077.         0Ch invalid number of destinations
  7078.         0Dh destination channel number out of range
  7079.         0Eh destination user is busy
  7080.         0Fh destination user has locked channel
  7081.         10h channel not open
  7082.         11h no datagram server on destination (NTNX)
  7083. Note:    if wildcard channel FFh used, actual channel number will be filled in
  7084. SeeAlso: AH=12h
  7085.  
  7086. Format of request block:
  7087. Offset    Size    Description
  7088.  00h    DWORD    pointer to packet to send
  7089.  04h    WORD    packet size in bytes (1-4096)
  7090.  06h    BYTE    number of destinations for packet (max 1Fh)
  7091.  07h 31 BYTEs    destination user IDs (FFh = broadcast to all except sender)
  7092.  26h 31 BYTEs    destination channels (FFh = first available channel)
  7093.  45h 31 BYTEs    return destination statuses
  7094. ----------7F12-------------------------------
  7095. INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
  7096.     AH = 12h
  7097.     AL = channel number being acknowledged
  7098.     DI:DX = 32-bit status to return to sender
  7099. Return: AL = status
  7100.         00h successful
  7101.         01h busy
  7102.         02h channel range error (not 00h-3Fh)
  7103.         03h invalid subfunction
  7104.         0Ah channel not open
  7105.         0Bh no message in channel
  7106.         0Ch destination slave busy--retry (NTNX)
  7107.         0Dh destination user not active
  7108.         0Eh destination slave not active (NTNX)
  7109.         0Fh destination disabled datagram service
  7110. Note:    also unlocks the channel, allowing the next datagram to be received
  7111. SeeAlso: AH=11h,AH=15h/CL=04h
  7112. ----------7F13--CL00-------------------------
  7113. INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
  7114.     AH = 13h
  7115.     CL = 00h
  7116. Note:    clears all pending datagrams and removes all channels opened in NTNX
  7117.       compatibility mode
  7118. ----------7F14--CL00-------------------------
  7119. INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
  7120.     AH = 14h
  7121.     CL = 00h
  7122.     DX:DI -> application FAR receive service routine (see below)
  7123. Return: AL = status
  7124.         00h successful
  7125.         01h busy
  7126.         02h channel range error (not 00h-3Fh)
  7127.         03h invalid subfunction
  7128. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  7129.  
  7130. Service routine called with:
  7131.     DH = sender ID
  7132.     DL = channel with datagram
  7133.     interrupts disabled
  7134. Return: AL = response code
  7135.         00h leave buffer locked, set channel status, and repeat call later
  7136.         01h release channel buffer
  7137.         02h change buffer pointer to DX:DI
  7138.     AH,CX,DX,DI,SI may be destroyed
  7139. ----------7F14--CL01-------------------------
  7140. INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
  7141.     AH = 14h
  7142.     CL = 01h
  7143.     DX:DI -> application FAR acknowledge service routine (see below)
  7144. Return: AL = status
  7145.         00h successful
  7146.         01h busy
  7147.         02h channel range error (not 00h-3Fh)
  7148.         03h invalid subfunction
  7149. Note:    the service routine will be called as soon as an acknowledgment arrives
  7150. SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h
  7151.  
  7152. Service routine called with:
  7153.     DS:SI -> acknowledge structure (see AH=15h/CL=04h)
  7154. Return: AL = response code
  7155.         00h application busy, network executive should call again later
  7156.         01h acknowledge accepted
  7157.     AH,DX,SI may be destroyed
  7158. ----------7F14--CL02-------------------------
  7159. INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
  7160.     AH = 14h
  7161.     CL = 02h
  7162.     AL = channel number
  7163.     DX:DI -> receive buffer
  7164. Return: AL = status
  7165.         00h successful
  7166.         01h busy
  7167.         02h channel range error (not 00h-3Fh)
  7168.         03h invalid subfunction
  7169. Note:    may be called from within a receive ISR or when a datagram is pending
  7170. SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
  7171. ----------7F14--CL03-------------------------
  7172. INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
  7173.     AH = 14h
  7174.     CL = 03h
  7175. Return: DX:DI -> current receive ISR
  7176. SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
  7177. ----------7F14--CL04-------------------------
  7178. INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
  7179.     AH = 14h
  7180.     CL = 04h
  7181. Return: DX:DI -> current acknowledge ISR
  7182. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  7183. ----------7F14--CL05-------------------------
  7184. INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
  7185.     AH = 14h
  7186.     CL = 05h
  7187.     DX:DI -> buffer for busy structure (see below)
  7188. Return: DX:DI buffer filled
  7189.  
  7190. Format of busy structure:
  7191. Offset    Size    Description
  7192.  00h    DWORD    pointer to busy flag byte
  7193.  04h    WORD    fixed port address (FF00h)
  7194. ----------7F15--CL00-------------------------
  7195. INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
  7196.     AH = 15h
  7197.     CL = 00h
  7198.     AL = channel number
  7199.     DX:DI -> status structure (see below)
  7200. Return: AL = status
  7201.         00h successful
  7202.         01h busy
  7203.         02h channel range error (not 00h-3Fh)
  7204.         03h invalid subfunction
  7205. SeeAlso: AH=15h/CL=01h
  7206.  
  7207. Format of status structure:
  7208. Offset    Size    Description
  7209.  00h    BYTE    channel status
  7210.         bit 0: channel open
  7211.             1: channel buffer contains received data
  7212.             7: channel locked
  7213.  01h    BYTE    sender ID
  7214. ----------7F15--CL01-------------------------
  7215. INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
  7216.     AH = 15h
  7217.     CL = 01h
  7218.     DX:DI -> full-channel structure
  7219. Return: AL = status
  7220.         00h successful
  7221.         01h busy
  7222.         0Ah no datagrams available
  7223. Note:    MW386 v1.0 returns the lowest channel with a datagram; newer versions
  7224.       and NTNX return the oldest datagram
  7225. SeeAlso: AH=15h/CL=00h
  7226.  
  7227. Format of full-channel structure:
  7228. Offset    Size    Description
  7229.  00h    BYTE    number of channel with oldest datagram
  7230.  01h    BYTE    sender ID
  7231. ----------7F15--CL02-------------------------
  7232. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
  7233.     AH = 15h
  7234.     CL = 02h
  7235. Return: AH = number of channels available (40h for MW386)
  7236. Note:    the application may always assume at least 32 channels available
  7237. SeeAlso: AH=15h/CL=03h
  7238. ----------7F15--CL03-------------------------
  7239. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
  7240.     AH = 15h
  7241.     CL = 03h
  7242.     DX:DI -> WORD for return value
  7243. Return: buffer WORD filled with maximum packet size (4096 for MW386)
  7244. SeeAlso: AH=15h/CL=02h
  7245. ----------7F15--CL04-------------------------
  7246. INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
  7247.     AH = 15h
  7248.     CL = 04h
  7249.     DX:DI -> status structure (see below)
  7250. Return: AL = status
  7251.         00h successful
  7252.         DX:DI structure filled
  7253.         01h busy
  7254.         0Ah no acknowledgement has arrived
  7255. SeeAlso: AH=12h,AH=14h/CL=01h
  7256.  
  7257. Format of status structure:
  7258. Offset    Size    Description
  7259.  00h    BYTE    sender ID
  7260.  01h    BYTE    channel number
  7261.  02h  4 BYTEs    receiver status (see AH=12h)
  7262. ----------7F16-------------------------------
  7263. INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
  7264.     AH = 16h
  7265.     DX:SI -> transfer structure (see below)
  7266. Return: AL = status
  7267.         00h successful
  7268.         0Ah source or destination out of range
  7269.         0Bh transfer kernal busy--try again
  7270. Notes:    this call transfers memory contents directly between users; both source
  7271.       and destination user IDs may differ from the caller's ID
  7272.     no segment wrap is allowed
  7273.  
  7274. Format of transfer structure:
  7275. Offset    Size    Description
  7276.  00h    WORD    bytes to transfer
  7277.  02h    BYTE    source ID
  7278.         FEh = caller
  7279.  03h    DWORD    source address
  7280.  07h    BYTE    destination ID
  7281.         FFh = all slaves except caller
  7282.         FEh = caller
  7283.  08h    DWORD    destination address
  7284. ----------7F21-------------------------------
  7285. INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
  7286.     AH = 21h
  7287.     AL = sender's user ID
  7288.     DS:DX -> control packet (see below)
  7289. Note:    messages or commands are ignored if disabled by the destination user
  7290. SeeAlso: AH=22h
  7291.  
  7292. Format of control packet:
  7293. Offset    Size    Description
  7294.  00h    BYTE    packet type
  7295.         00h message
  7296.         01h NTNX command
  7297.         02h MW386 command
  7298.  01h    BYTE    destination user ID or 'A' for all users
  7299.  02h 62 BYTEs    ASCIZ message (packet type 00h)
  7300.         BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
  7301. Note:    a maximum of 16 keycodes will be processed for NTNX and MW386 commands
  7302. ----------7F22-------------------------------
  7303. INT 7F - Alloy NTNX - GET MESSAGE
  7304.     AH = 22h
  7305. Return: pending messages displayed on user's screen
  7306. SeeAlso: AH=21h
  7307. ----------7F24-------------------------------
  7308. INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
  7309.     AH = 24h
  7310.     CL = function
  7311.         00h attach
  7312.         01h release
  7313.     CH = drive (0=A:,1=B:,etc)
  7314. Return: AX = status
  7315.         00h successful
  7316.         01h invalid request
  7317.         02h already attached
  7318.         03h not attached
  7319.         04h lock table full
  7320. Note:    only drives on the current machine may be attached
  7321. ----------7F24-------------------------------
  7322. INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
  7323.     AH = 24h
  7324.     CL = function
  7325.         02h attach host
  7326.         03h release host
  7327. Return: AX = status
  7328.         00h successful
  7329.         01h invalid request
  7330.         02h already attached
  7331.         03h not attached
  7332.         04h lock table full
  7333. Note:    the host processor may be attached in order to perform I/O via the host
  7334. ----------7F25--CL00-------------------------
  7335. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
  7336.     AH = 25h
  7337.     CL = 00h        
  7338. Return: AH = version suffix letter
  7339.     CH = major version number
  7340.     CL = minor version number
  7341. SeeAlso: AH=25h/CL=01h
  7342. ----------7F25--CL01-------------------------
  7343. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
  7344.     AH = 25h
  7345.     CL = 01h
  7346. Return: CL = type
  7347.         00h RTNX
  7348.         01h ATNX
  7349.         02h NTNX
  7350.         03h BTNX
  7351.         04h MW386
  7352.         05h ANSK
  7353. SeeAlso: AH=25h/CL=00h
  7354. ----------7F26--CL00-------------------------
  7355. INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
  7356.     AH = 26h
  7357.     CL = 00h
  7358. Return: AX = file mode bits
  7359.         bit 0: directory protection enabled
  7360.         1: extended open enabled
  7361.         2: flush on every disk write
  7362.         3: flush on every disk write in locked interval
  7363.         4: flush on reads from simultaneously opened file
  7364. Note:    MW386 does not support file modes, and always returns AX=001Fh
  7365. SeeAlso: AH=26h,AH=26h/CL=06h
  7366. ----------7F26-------------------------------
  7367. INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
  7368.     AH = 26h
  7369.     CL = check type to set/reset
  7370.         01h directory protection
  7371.         02h extended open
  7372.         03h flush on every disk write
  7373.         04h flush on disk write if any lock set during write
  7374.         05h flush on all reads if file written
  7375.     AL = new state (00h off, 01h on)
  7376. SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
  7377. ----------7F26--CL06-------------------------
  7378. INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
  7379.     AH = 26h
  7380.     CL = 06h
  7381. Note:    cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
  7382. SeeAlso: AH=26h/CL=00h
  7383. ----------7F30-------------------------------
  7384. INT 7F - Alloy MW386 - GET PORT INFORMATION
  7385.     AH = 30h
  7386.     CX = MW386 port number
  7387. Return: AL = FFh if port not found
  7388.        else     driver unit number
  7389.            BL = port mode
  7390.            BH = port type
  7391.            02h remote
  7392.            DH = owner's machine ID
  7393.            DL = owner's user ID
  7394. SeeAlso: INT 17/AH=8Bh
  7395. ----------7F31-------------------------------
  7396. INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
  7397.     AH = 31h
  7398.     ???
  7399. Return: ???
  7400. ----------7F37-------------------------------
  7401. INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
  7402.     AH = 37h
  7403. Return: ES:AX -> semaphore table
  7404. ----------7F37-------------------------------
  7405. INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
  7406.     AH = 37h
  7407.     DS:DX -> ASCIZ string to display
  7408. Note:    if the string is empty, a terminal update will be forced
  7409. ----------7F38-------------------------------
  7410. INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
  7411.     AH = 38h
  7412.     AL = new terminal driver number
  7413.         FFh dummy driver
  7414.         FEh current driver
  7415.         FDh load new driver
  7416.         DS:SI -> new driver
  7417. SeeAlso: AH=39h
  7418. ----------7F39-------------------------------
  7419. INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
  7420.     AH = 39h
  7421.     AL = new terminal driver number
  7422.     DL = user number (FFh = caller)
  7423.     DH = machine number if DL <> FFh
  7424. Return: CF set if invalid user number
  7425.     CF clear if successful
  7426. Notes:    only available to supervisors
  7427.     the new driver number will not take effect until the user is rebooted
  7428. SeeAlso: AH=38h
  7429. ----------7F3A-------------------------------
  7430. INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
  7431.     AH = 3Ah
  7432.     DL = user number (FFh = caller)
  7433.     DH = machine number
  7434. Return: CF clear if successful
  7435.         AH = terminal driver number
  7436.         AL = baud rate (00h = 38400, 01h = 19200, etc)
  7437.         CL = parity (00h none, 01h even, 02h odd)
  7438.         CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  7439.     CF set if invalid user number
  7440. SeeAlso: AH=3Bh
  7441. ----------7F3B-------------------------------
  7442. INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
  7443.     AH = 3Bh
  7444.     AL = baud rate (00h = 38400, 01h = 19200, etc)
  7445.     CL = parity (00h none, 01h even, 02h odd)
  7446.     CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  7447.     DL = user number (FFh = caller)
  7448.     DH = machine number for user
  7449. Return: CF set if invalid user number
  7450. Notes:    only available to supervisors
  7451.     the new parameters will take effect immediately if the user's terminal
  7452.       has not been started, else AH=3Dh must be called to post the changes
  7453. SeeAlso: AH=3Ah,AH=3Dh
  7454. ----------7F3C-------------------------------
  7455. INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
  7456.     AH = 3Ch
  7457.     AL = new state
  7458.          00h disabled, 01h enabled
  7459.     DL = user number (FFh = caller)
  7460.     DH = machine number for user
  7461. Return: CF set if invalid user number
  7462. Note:    only available to supervisors
  7463. SeeAlso: AH=3Dh
  7464. ----------7F3D-------------------------------
  7465. INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
  7466.     AH = 3Dh
  7467. Note:    should be called whenever a program changes the terminal type or its
  7468.       parameters
  7469. SeeAlso: AH=3Bh
  7470. ----------7F41-------------------------------
  7471. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  7472.     AH = 41h
  7473.     AL = user ID
  7474.     DS:DX -> ASCIZ filename
  7475. Return: AL = status
  7476.         00h successful
  7477.         01h invalid function
  7478.         02h already locked
  7479.         03h unable to lock
  7480.         04h lock table full
  7481. Note:    requests exclusive read/write access to file
  7482. SeeAlso: AH=00h,,AH=41h"MW386",AH=42h"NTNX"
  7483. ----------7F41-------------------------------
  7484. INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
  7485.     AH = 41h
  7486.     AL = user ID
  7487.     DS:DX -> ASCIZ semaphore name
  7488. Return: AL = status
  7489.         00h successful
  7490.         01h invalid function
  7491.         02h semaphore already locked
  7492.         03h unable to lock semaphore
  7493.         04h semaphore space exhausted
  7494. SeeAlso: AH=00h,AH=42h"MW386"
  7495. ----------7F42-------------------------------
  7496. INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
  7497.     AH = 42h
  7498.     AL = user ID
  7499.     DS:DX -> ASCIZ filename
  7500. Return: AL = status
  7501.         00h successful
  7502.         01h invalid function
  7503.         02h already locked
  7504.         03h unable to lock
  7505.         04h lock table full
  7506. SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
  7507. ----------7F42-------------------------------
  7508. INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
  7509.     AH = 42h
  7510.     AL = user ID
  7511.     DS:DX -> ASCIZ semaphore name
  7512. Return: AL = status
  7513.         00h successful
  7514.         01h invalid function
  7515.         03h unable to unlock semaphore
  7516. SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
  7517. ----------7F4E-------------------------------
  7518. INT 7F - Alloy MW386 v2+ - SET ERROR MODE
  7519.     AH = 4Eh
  7520.     AL = error mode flags
  7521.         bit 0: display critical disk errors
  7522.         1: display sharing errors
  7523.     DX = 4E58h ("NX")
  7524. Return: AL = status
  7525.         00h successful
  7526. SeeAlso: AH=4Fh
  7527. ----------7F4F-------------------------------
  7528. INT 7F - Alloy MW386 v2+ - SET FCB MODE
  7529.     AH = 4Fh
  7530.     AL = FCB mode
  7531.         02h read/write compatibility
  7532.         42h read/write shared
  7533.     DX = 4E58h ("NX")
  7534. Return: AL = status
  7535.         00h successful
  7536. ----------7F81-------------------------------
  7537. INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
  7538.     AH = 81h
  7539.     AL = user ID
  7540.     DS:DX -> ASCIZ device name
  7541. SeeAlso: AH=82h
  7542. ----------7F82-------------------------------
  7543. INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
  7544.     AH = 82h
  7545.     AL = user ID
  7546.     DS:DX -> ASCIZ device name
  7547. SeeAlso: AH=81h
  7548. ----------7FA0-------------------------------
  7549. INT 7F - Alloy MW386 - GET USER NAME
  7550.     AH = A0h
  7551.     DL = user number (FFh = caller)
  7552.     DH = machine number for user
  7553.     ES:DI -> 17-byte buffer for ASCIZ user name
  7554. Return: CF set if invalid user number
  7555. SeeAlso: AH=03h,AH=A1h
  7556. ----------7FA1-------------------------------
  7557. INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
  7558.     AH = A1h
  7559. Return: AL = process number
  7560.     DL = user number
  7561.     DH = machine number
  7562. SeeAlso: AH=03h,AH=A0h,AH=A2h
  7563. ----------7FA2-------------------------------
  7564. INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
  7565.     AH = A2h
  7566.     DL = user number (FFh = caller)
  7567.     DH = machine number for user
  7568. Return: CF clear if successful
  7569.         AL = privilege level
  7570.         00h supervisor
  7571.         01h high
  7572.         02h medium
  7573.         03h low
  7574.     CF set if invalid user number
  7575. SeeAlso: AH=A1h,AH=A3h
  7576. ----------7FA3-------------------------------
  7577. INT 7F - Alloy MW386 - GET USER LOGIN STATE
  7578.     AH = A3h
  7579.     DL = user number
  7580.     DH = machine number for user
  7581. Return: CF clear if successful
  7582.         AL = login state
  7583.         00h never logged in
  7584.         01h currently logged out
  7585.         03h currently logged in
  7586.     CF set if invalid user number or user not active
  7587. SeeAlso: AH=A2h
  7588. ----------7FA4-------------------------------
  7589. INT 7F - Alloy MW386 - VERIFY USER PASSWORD
  7590.     AH = A4h
  7591.     DS:DX -> ASCIZ password (null-padded to 16 bytes)
  7592. Return: AL = 00h if accepted
  7593.        else     invalid password
  7594. ----------7FA5-------------------------------
  7595. INT 7F - Alloy MW386 - GET/SET USER STATUS
  7596.     AH = A5h
  7597.     AL = function
  7598.         00h get status
  7599.         Return: BX = user flags
  7600.                 bit 5: allow messages
  7601.             CL = scan code for task manager hotkey
  7602.             CH = scan code for spooler hotkey
  7603.             DL = scan code for task swapper hotkey
  7604.             DH = modifier key status
  7605.         01h set status
  7606.         BX = user flags (see above)
  7607.         CL = scan code for task manager hotkey
  7608.         CH = scan code for spooler hotkey
  7609.         DL = scan code for task swapper hotkey
  7610.         DH = modifier key status
  7611.     DI = machine number and user number
  7612. Return: CF set if invalid user number
  7613. Note:    must have supervisor privilege to set another user's status
  7614. ----------7FB0-------------------------------
  7615. INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
  7616.     AH = B0h
  7617.     AL = user number
  7618.     DS = code segment
  7619. Note:    MW386 ignores AL and DS; it releases all semaphores locked using INT 67
  7620.       or INT 7F locking functions
  7621. SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
  7622. ----------7FB1-------------------------------
  7623. INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
  7624.     AH = B1h
  7625.     AL = (bits 7-5) 000
  7626.          (bits 4-0) user ID
  7627. Note:    MW386 ignores AL; it releases all semaphores locked using INT 67 or
  7628.       INT 7F locking functions
  7629. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  7630. ----------7FB2-------------------------------
  7631. INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
  7632.     AH = B2h
  7633.     AL = (bits 7-5) 001
  7634.          (bits 4-0) user ID
  7635. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
  7636. ----------7FB3-------------------------------
  7637. INT 7F - Alloy NTNX - RELEASE FILES FOR USER
  7638.     AH = B3h
  7639.     AL = (bits 7-5) 010
  7640.          (bits 4-0) user ID
  7641. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
  7642. ----------7FB4-------------------------------
  7643. INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
  7644.     AH = B4h
  7645.     AL = user ID
  7646. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
  7647. ----------7FC3-------------------------------
  7648. INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
  7649.     AH = C3h
  7650.     AL = byte to write
  7651. Return: CF clear if successful
  7652.     CF set on error
  7653. SeeAlso: AH=C6h
  7654. ----------7FC5-------------------------------
  7655. INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
  7656.     AH = C5h
  7657.     AL = new console mode
  7658.         00h keyboard indirect
  7659.         01h keyboard direct
  7660.         02h data handshake enforced
  7661.         03h no data handshake
  7662. Return: CF clear if successful
  7663.         AL = prior console mode
  7664.     CF set on error (caller is not remote user)
  7665. Note:    modes 2 and 3 may be used for input through the console port; no video
  7666.       output should be performed in these modes
  7667. ----------7FC6-------------------------------
  7668. INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
  7669.     AH = C6h
  7670.     AL = byte to write
  7671. Return: CF clear if successful
  7672.     CF set on error (caller is not remote user)
  7673. Note:    any terminal driver data translation will be bypassed
  7674. SeeAlso: AH=C3h,AH=C7h
  7675. ----------7FC7-------------------------------
  7676. INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
  7677.     AH = C7h
  7678. Return: CF clear if successful
  7679.         AL = byte read
  7680.     CF set on error (no data available or caller is not remote user)
  7681. Note:    used to read data after placing console in mode 2 or 3 (see AH=C5h)
  7682. SeeAlso: AH=C5h,AH=C6h,AH=C8h
  7683. ----------7FC8-------------------------------
  7684. INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
  7685.     AH = C8h
  7686.     AL = maximum bytes to read
  7687.     ES:DI -> buffer for console data
  7688. Return: CF clear if successful
  7689.         CX = number of bytes read
  7690.     CF set on error (caller is not remote user)
  7691. SeeAlso: AH=C7h
  7692. ----------7FCF-------------------------------
  7693. INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
  7694.     AH = CFh
  7695.     DS:DX -> ASCIZ string containing user number to be reset
  7696. SeeAlso: AH=D6h
  7697. ----------7FD6-------------------------------
  7698. INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
  7699.     AH = D6h
  7700.     DS:DX -> reset packet (see below)
  7701. Return: never if succesful
  7702. Note:    all users will be shut down immediately if successful
  7703. SeeAlso: AH=CFh
  7704.  
  7705. Format of reset packet:
  7706. Offset    Size    Description
  7707.  00h    DWORD    reset code (60606060h)
  7708.  04h 16 BYTEs    ASCIZ supervisor password padded with nulls
  7709. ----------7FD7-------------------------------
  7710. INT 7F - Alloy MW386 - POST EVENT
  7711.     AH = D7h
  7712.     AL = user number (if local event)
  7713.     DX = event number
  7714. ----------7FD8-------------------------------
  7715. INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
  7716.     AH = D8h
  7717. Return: CF set on error
  7718. Note:    forces all disk buffers to be written out immediately
  7719. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
  7720. ----------7FDB-------------------------------
  7721. INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
  7722.     AH = DBh
  7723. Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
  7724. ----------7FE0-------------------------------
  7725. INT 7F - Alloy MW386 - CREATE DOS TASK
  7726.     AH = E0h
  7727.     AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7728.     DS:DX -> ASCIZ task name (max 16 bytes)
  7729. Return: CF clear if successful
  7730.         AL = task create ID
  7731.     CF set on error
  7732. Note:    only foreground DOS tasks can use this function
  7733. SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
  7734. ----------7FE1-------------------------------
  7735. INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
  7736.     AH = E1h
  7737.     AL = create ID (from AH=E0h)
  7738. Return: AL = DOS process number
  7739.     CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7740. Note:    this function should not be called immediately after creating a new
  7741.       DOS task, since the new task is being initialized by a concurrent
  7742.       process
  7743. SeeAlso: AH=E0h,AH=E2h
  7744. ----------7FE2-------------------------------
  7745. INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
  7746.     AH = E2h
  7747.     AL = DOS process number (from AH=E1h)
  7748. Return: CF set on error (invalid process number or caller not foreground task)
  7749. Notes:    specified task becomes the foreground task and current task is placed
  7750.       in the background
  7751.     may only be called by a foreground task
  7752. SeeAlso: AH=E0h,AH=E1h
  7753. ----------7FE3-------------------------------
  7754. INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
  7755.     AH = E3h
  7756. ---v1.x---
  7757.     AL = user number
  7758. ---v2+---
  7759.     BH = user number
  7760.     BL = task number
  7761. ---
  7762.     DS:DX -> ASCIZ task name
  7763. Return: CF set on error (invalid process number)
  7764. SeeAlso: AH=E0h,AH=E4h,AH=E5h
  7765. ----------7FE4-------------------------------
  7766. INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
  7767.     AH = E4h
  7768. ---v1.x---
  7769.     AL = user number
  7770. ---v2+---
  7771.     BH = user number
  7772.     BL = task number
  7773. ---
  7774.     ES:DI -> buffer for task name
  7775. Return: CF clear if successful
  7776.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7777.         DX = task flags
  7778.         bit 7: MSDOS process
  7779.         ES:DI buffer filled
  7780.     CF set on error (invalid process number)
  7781. SeeAlso: AH=E3h,AH=E5h
  7782. ----------7FE5-------------------------------
  7783. INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
  7784.     AH = E5h
  7785.     DS:DX -> ASCIZ task name
  7786.     BH = user number
  7787. Return: CF clear if successful
  7788.         AL = DOS process number
  7789.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  7790.     CF set on error (no match for name)
  7791. SeeAlso: AH=E3h,AH=E4h
  7792. ----------7FE6-------------------------------
  7793. INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
  7794.     AH = E6h
  7795. Return: AX = number of processes available to current user
  7796. SeeAlso: AH=E0h
  7797. ----------7FE7-------------------------------
  7798. INT 7F - Alloy MW386 - REMOVE DOS TASK
  7799.     AH = E7h
  7800.     AL = DOS process number
  7801. Return: CF set on error (invalid process number or first process)
  7802. Note:    can only be called by a foreground task
  7803. SeeAlso: AH=E0h
  7804. ----------7FE8-------------------------------
  7805. INT 7F - Alloy MW386 - DOS TASK DELAY
  7806.     AH = E8h
  7807.     CX = delay time in milliseconds
  7808. Note:    a delay of 0 may be used to surrender the current time slice
  7809. SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh"DoubleDOS",INT 2F/AX=1680h
  7810. ----------7FF0-------------------------------
  7811. INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
  7812.     AH = F0h
  7813.     AL = group number
  7814.     DS:DX -> ASCIZ directory name
  7815. Return: CF clear if successful
  7816.         AX = status
  7817.         0002h directory not found
  7818.         0003h directory not found
  7819.         0005h directory in use, cannot be restricted
  7820.         02xxh restricted to group xxh
  7821.     CF set on error
  7822. Note:    the restriction on the directory may be removed by calling this
  7823.       function with group 0, then using AH=F1h to assign the directory to
  7824.       group 0
  7825. SeeAlso: AH=F1h,AH=F2h,AH=F3h
  7826. ----------7FF1-------------------------------
  7827. INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
  7828.     AH = F1h
  7829.     AL = group number
  7830.     DS:DX -> ASCIZ directory name
  7831. Notes:    performs permanent assignment to a group; no immediate action is taken
  7832.       unless the directory has been restricted with AH=F0h
  7833.     may be used to restrict a nonexistent directory
  7834. SeeAlso: AH=F0h
  7835. ----------7FF2-------------------------------
  7836. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
  7837.     AH = F2h
  7838.     CX = entry number
  7839.     ES:DI -> 64-byte buffer
  7840. Return: CF clear if successful
  7841.         buffer filled with 63-byte directory info and 1-byte group number
  7842.     CF set on error (invalid entry)
  7843. SeeAlso: AH=F0h,AH=F3h
  7844. ----------7FF3-------------------------------
  7845. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
  7846.     AH = F3h
  7847.     AL = group number
  7848.     CX = entry number
  7849.     ES:DI -> 64-byte buffer
  7850. Return: CF clear if successful
  7851.         CX = next entry number
  7852.         buffer filled with 63-byte directory info and 1-byte group number
  7853.     CF set on error (no more matching entries)
  7854. Note:    like AH=F2h, but only returns directories belonging to the specified
  7855.       group
  7856. SeeAlso: AH=F2h
  7857. ----------7FF8-------------------------------
  7858. INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
  7859.     AH = F8h
  7860.     AL = group number
  7861.     DL = user number
  7862.     DH = machine number (currently 00h)
  7863. Return: CF clear if successful
  7864.     CF set on error (user already in maximum number of groups)
  7865. Note:    each user is allowed eight group assignments
  7866. SeeAlso: AH=F9h,AH=FAh
  7867. ----------7FF9-------------------------------
  7868. INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
  7869.     AH = F9h
  7870.     AL = group number
  7871.     DL = user number
  7872.     DH = machine number (currently 00h)
  7873. Return: CF set if failed
  7874. SeeAlso: AH=F8h,AH=FAh
  7875. ----------7FFA-------------------------------
  7876. INT 7F - Alloy MW386 - GET USER GROUP LIST
  7877.     AH = FAh
  7878.     DL = user number
  7879.     DH = machine number (currently 00h)
  7880.     ES:DI -> 16-byte buffer for group list
  7881. Return: CX = number of groups
  7882.     ES:DI buffer filled with group numbers
  7883. SeeAlso: AH=F8h,AH=F9h
  7884. ----------7FFB-------------------------------
  7885. INT 7F - Alloy MW386 - ASSIGN GROUP NAME
  7886.     AH = FBh
  7887.     CL = group number
  7888.     ES:DI -> ASCIZ group name (max 17 bytes)
  7889. SeeAlso: AH=FCh
  7890. ----------7FFC-------------------------------
  7891. INT 7F - Alloy MW386 - GET GROUP NAME
  7892.     AH = FCh
  7893.     CL = group number
  7894.     ES:DI -> 17-byte buffer for ASCIZ name
  7895. Return: ES:DI buffer filled
  7896. Note:    if the group has not been named, "(unnamed)" is returned
  7897. SeeAlso: AH=FBh
  7898. ----------80---------------------------------
  7899. INT 80 - Q-PRO4 - ???
  7900. ----------80---------------------------------
  7901. INT 80 - reserved for BASIC
  7902. ----------80----BX0000-----------------------
  7903. INT 80 - SoundBlaster SBFM driver - GET VERSION
  7904.     BX = 0000h
  7905. Return: ???
  7906. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  7907. SeeAlso: BX=0008h,INT 2F/AX=FBFBh
  7908. ----------80----BX0001-----------------------
  7909. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  7910.     BX = 0001h
  7911.     DX:AX -> music status byte
  7912. SeeAlso: BX=0000h,BX=0002h,BX=0003h
  7913. ----------80----BX0002-----------------------
  7914. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  7915.     BX = 0002h
  7916.     CX = number of instruments
  7917.     DX:AX -> instrument table
  7918. SeeAlso: BX=0000h,BX=0001h,BX=0005h
  7919. ----------80----BX0003-----------------------
  7920. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  7921.     BX = 0003h
  7922.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  7923.         FFFFh to restore to 18.2 Hz
  7924. SeeAlso: BX=0000h,BX=0001h,BX=0004h
  7925. ----------80----BX0004-----------------------
  7926. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  7927.     BX = 0004h
  7928.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  7929. Note:    default frequency is 96 Hz
  7930. SeeAlso: BX=0000h,BX=0003h
  7931. ----------80----BX0005-----------------------
  7932. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  7933.     BX = 0005h
  7934.     AX = semi-tone offset
  7935. SeeAlso: BX=0000h,BX=0002h,BX=0006h
  7936. ----------80----BX0006-----------------------
  7937. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  7938.     BX = 0006h
  7939.     DX:AX -> music block
  7940. Return: AX = status
  7941.         0000h successful
  7942.         0001h music already active
  7943. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  7944. ----------80----BX0007-----------------------
  7945. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  7946.     BX = 0007h
  7947. Return: AX = status
  7948.         0000h successful
  7949.         0001h music not active
  7950. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  7951. ----------80----BX0008-----------------------
  7952. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  7953.     BX = 0008h
  7954. Return: AX = status
  7955.         0000h successful
  7956.         0001h music is active
  7957. SeeAlso: BX=0000h
  7958. ----------80----BX0009-----------------------
  7959. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  7960.     BX = 0009h
  7961. Return: AX = status
  7962.         0000h successful
  7963.         0001h no music active
  7964. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  7965. ----------80----BX000A-----------------------
  7966. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  7967.     BX = 000Ah
  7968. Return: AX = status
  7969.         0000h successful
  7970.         0001h no music paused
  7971. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  7972. ----------80----BX000B-----------------------
  7973. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  7974.     BX = 000Bh
  7975.     DX:AX -> trap routine
  7976. SeeAlso: BX=0000h
  7977. ----------8001-------------------------------
  7978. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  7979.     AH = 01h
  7980. Return: AX = 0000h
  7981.     CX = FFFFh
  7982.     DX = FFFFh
  7983. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  7984.     all buffer pointers are reset back to 0
  7985. ----------8002-------------------------------
  7986. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  7987.     AH = 02h
  7988.     BX = extra bytes to allocate per packet
  7989. Return: AX = segment address of 10K buffer (for receives???)
  7990.     BX = segment address of 2K buffer (for sends???)
  7991. SeeAlso: AH=05h
  7992. ----------8003-------------------------------
  7993. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  7994.     AH = 03h
  7995. Return: CX:DX -> receive call address
  7996. Note:    the returned address can be used in the packet driver calls since it
  7997.       will be a valid address in all DOS boxes
  7998. SeeAlso: AH=06h
  7999. ----------8004-------------------------------
  8000. INT 80 - QPC Software PKTINT.COM - ENABLE???
  8001.     AH = 04h
  8002.     BX = ???
  8003. Return: ???
  8004. ----------8005-------------------------------
  8005. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  8006.     AH = 05h
  8007. Return: AX = amount of buffer currently in use
  8008.     BX = current offset in buffer
  8009.     CX = number of times receive has been called
  8010. SeeAlso: AH=02h
  8011. ----------8006-------------------------------
  8012. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  8013.     AH = 06h
  8014. Return: BX = next packet offset
  8015.     CX = number of bytes still buffered
  8016.     DX = size of packet released back into buffer pool
  8017. SeeAlso: AH=03h
  8018. ----------81---------------------------------
  8019. INT 81 - reserved for BASIC
  8020. ----------81---------------------------------
  8021. INT 81 - IBM TOKEN RING ADAPTER - ???
  8022. ----------82---------------------------------
  8023. INT 82 - reserved for BASIC
  8024. ----------82---------------------------------
  8025. INT 82 - IBM TOKEN RING ADAPTER - ???
  8026.     AH = function
  8027.         00h display message???
  8028.         DS:BX -> string
  8029.     ???
  8030. Return: ???
  8031. ----------83---------------------------------
  8032. INT 83 - reserved for BASIC
  8033. ----------84---------------------------------
  8034. INT 84 - reserved for BASIC
  8035. ----------85---------------------------------
  8036. INT 85 - reserved for BASIC
  8037. ----------86---------------------------------
  8038. INT 86 - NetBIOS - ORIGINAL INT 18
  8039. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  8040. SeeAlso: INT 18
  8041. ----------86---------------------------------
  8042. INT 86 - used by IBM ROM BASIC while in interpreter
  8043. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8044.     BASIC.COM/BASICA.COM do not restore vector on termination
  8045. ----------86---------------------------------
  8046. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  8047. ----------87---------------------------------
  8048. INT 87 - used by IBM ROM BASIC while in interpreter
  8049. Notes:    called by ROM BASIC
  8050.     BASIC.COM/BASICA.COM do not restore vector on termination
  8051. ----------87---------------------------------
  8052. INT 87 - APL*PLUS/PC - ????
  8053. ----------88---------------------------------
  8054. INT 88 - used by IBM ROM BASIC while in interpreter
  8055. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8056.     BASIC.COM/BASICA.COM do not restore vector on termination
  8057. ----------88----AL00-------------------------
  8058. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  8059.     AL = 00h
  8060.     BX = STPTR of the variable to be assigned
  8061.     ES:SI -> model of type, rank, and shape (see below)
  8062. Return: ES:DI -> first data byte of object
  8063.     DX:CX = number of elements in the object
  8064. SeeAlso: INT C8"APL"
  8065.  
  8066. Format of shape model:
  8067. Offset    Size    Description
  8068.  00h    BYTE    type
  8069.         01h character (2-byte dimension sizes)
  8070.         02h integer (2-byte dimension sizes)
  8071.         08h floating point (2-byte dimension sizes)
  8072.         11h character (4-byte dimension sizes)
  8073.         12h integer (4-byte dimension sizes)
  8074.         18h floating point (4-byte dimension sizes)
  8075.  01h    BYTE    rank
  8076.  02h    WORD/DWORD first dimension of shape
  8077.  N    WORD/DWORD second dimension of shape
  8078.     ...
  8079. ----------88----AL01-------------------------
  8080. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  8081.     AL = 01h
  8082.     AH = rank
  8083.     BX = STPTR of the variable to be assigned
  8084.     CX = first dimension (if any)
  8085.     DX = second dimension (if any)
  8086. Return: ES:DI -> object
  8087.     CX = number of elements in the object
  8088. Note:    each dimension must be 32767 or smaller
  8089. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  8090. ----------88----AL02-------------------------
  8091. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  8092.     AL = 02h
  8093.     AH = rank
  8094.     BX = STPTR of the variable to be assigned
  8095.     CX = first dimension (if any)
  8096.     DX = second dimension (if any)
  8097. Return: ES:DI -> object
  8098.     CX = number of elements in the object
  8099. Note:    each dimension must be 32767 or smaller
  8100. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  8101. ----------88----AL08-------------------------
  8102. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  8103.     AL = 08h
  8104.     AH = rank
  8105.     BX = STPTR of the variable to be assigned
  8106.     CX = first dimension (if any)
  8107.     DX = second dimension (if any)
  8108. Return: ES:DI -> object
  8109.     CX = number of elements in the object
  8110. Note:    each dimension must be 32767 or smaller
  8111. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  8112. ----------88----ALF5-------------------------
  8113. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  8114.     AL = F5h
  8115.     BX = STPTR of object
  8116. SeeAlso: INT C8"APL"
  8117. ----------88----ALF6-------------------------
  8118. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  8119.     AL = F6h
  8120.     BX = STPTR of object
  8121. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  8122. ----------88----ALF7-------------------------
  8123. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  8124.     AL = F7h
  8125.     BX = STPTR of object
  8126. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  8127. ----------88----ALF8-------------------------
  8128. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  8129.     AL = F8h
  8130.     BX = STPTR of object
  8131. Return:     BX = 0000h eligible
  8132.           0001h not eligible
  8133. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  8134. ----------88----ALF9-------------------------
  8135. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  8136.     AL = F9h
  8137.     ES:SI -> name
  8138.     CX = length of name
  8139. Return: CF set if name ill-formed or already in use
  8140.         BX = STPTR if already in symbol table
  8141.     CF clear if name is available for use
  8142.         BX = 0000h
  8143. Note:    does not force the name into the workspace
  8144. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  8145. ----------88----ALFC-------------------------
  8146. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  8147.     AL = FCh
  8148.     BX = amount of memory needed (paragraphs)
  8149. Return: CF clear if memory available
  8150.     CF set if a workspace compaction is required
  8151. SeeAlso: AL=FDh,INT C8"APL"
  8152. ----------88----ALFD-------------------------
  8153. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  8154.     AL = FDh
  8155. Return: BX = number of paragraphs available in workspace
  8156. SeeAlso: AL=FCh,INT C8"APL"
  8157. ----------88----ALFE-------------------------
  8158. INT 88 - APL*PLUS/PC - CREATE NAME
  8159.     AL = FEh
  8160.     ES:SI -> name
  8161.     CX = length of name
  8162. Return: BX = STPTR of name
  8163.     DX = interpreter's data segment
  8164. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  8165. ----------88----ALFF-------------------------
  8166. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  8167.     AL = FFh
  8168.     ES:SI -> name
  8169.     CX = length of name
  8170. Return: CF set if name ill-formed or already in use
  8171.         BX = STPTR if already in symbol table
  8172.     CF clear if name is available for use
  8173.         BX = 0000h
  8174. Note:    forces the name into the workspace and makes it immune from outswapping
  8175. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  8176. ----------89---------------------------------
  8177. INT 89 - used by IBM ROM BASIC while in interpreter
  8178. Notes:    called by ROM BASIC
  8179.     BASIC.COM/BASICA.COM do not restore vector on termination
  8180. ----------8A---------------------------------
  8181. INT 8A - used by IBM ROM BASIC while in interpreter
  8182. Notes:    called by ROM BASIC
  8183.     BASIC.COM/BASICA.COM do not restore vector on termination
  8184. ----------8A---------------------------------
  8185. INT 8A - APL*PLUS/PC - PRINT SCREEN
  8186. Note:    same as INT 05
  8187. SeeAlso: INT 05,INT CA"APL"
  8188. ----------8B---------------------------------
  8189. INT 8B - used by IBM ROM BASIC while in interpreter
  8190. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8191.     BASIC.COM/BASICA.COM do not restore vector on termination
  8192. ----------8B---------------------------------
  8193. INT 8B - APL*PLUS/PC - BEEP
  8194. Note:    same as printing a ^G via INT 21/AH=02h
  8195. SeeAlso: INT 21/AH=02h,INT CB"APL"
  8196. ----------8C---------------------------------
  8197. INT 8C - used by IBM ROM BASIC while in interpreter
  8198. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8199.     BASIC.COM/BASICA.COM do not restore vector on termination
  8200. ----------8C---------------------------------
  8201. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  8202.     AX = flag
  8203.         0000h do not save display attributes
  8204.         0001h save attributes
  8205. SeeAlso: INT CC"APL"
  8206. ----------8D---------------------------------
  8207. INT 8D - used by IBM ROM BASIC while in interpreter
  8208. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8209.     BASIC.COM/BASICA.COM do not restore vector on termination
  8210. ----------8E---------------------------------
  8211. INT 8E - used by IBM ROM BASIC while in interpreter
  8212. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8213.     BASIC.COM/BASICA.COM do not restore vector on termination
  8214. ----------8F---------------------------------
  8215. INT 8F - used by IBM ROM BASIC while in interpreter
  8216. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8217.     BASIC.COM/BASICA.COM do not restore vector on termination
  8218. ----------90---------------------------------
  8219. INT 90 - used by IBM ROM BASIC while in interpreter
  8220. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8221.     BASIC.COM/BASICA.COM do not restore vector on termination
  8222. ----------90---------------------------------
  8223. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  8224. ----------91---------------------------------
  8225. INT 91 - used by IBM ROM BASIC while in interpreter
  8226. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8227.     BASIC.COM/BASICA.COM do not restore vector on termination
  8228. ----------91---------------------------------
  8229. INT 91 - IBM TOKEN RING ADAPTER - ???
  8230. ----------92---------------------------------
  8231. INT 92 - used by IBM ROM BASIC while in interpreter
  8232. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8233.     BASIC.COM/BASICA.COM do not restore vector on termination
  8234. ----------92---------------------------------
  8235. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  8236.     BX:DX -> control block
  8237. SeeAlso: INT 68"Sangoma"
  8238. ----------92E1-------------------------------
  8239. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  8240.     AH = E1h
  8241.     AL = function
  8242.     BX = stack count (number of words to push)
  8243.     CX:DX -> stack data (in word-reversed order ready to push)
  8244. Return: AX = status
  8245.         0001h success
  8246.         FF97h "ERS_NOT_AVAILABLE"
  8247.         FF99h "ERS_TOO_MANY_NAMES"
  8248.         FF9Ah "ERS_BAD_NAME_PASSWORD"
  8249.         FFE3h "ERS_NAME_NOT_FOUND"
  8250.         FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
  8251.         FFFFh "ERS_NO_SUCH_FILE"
  8252. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  8253. ----------92E100BX000A-----------------------
  8254. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  8255.     AX = E100h
  8256.     BX = 000Ah
  8257.     CX:DX -> parameter block (see below)
  8258. Return: AX = 0001h success
  8259. Note:    this function is used to initialize the dispatcher
  8260. SeeAlso: AX=E101h,AX=E103h
  8261.  
  8262. Format of parameter block:
  8263. Offset    Size    Description
  8264.  00h    WORD    segment of ???
  8265.  02h    WORD    offset of ???
  8266.  04h    WORD    high part of long ???
  8267.  06h    WORD    low part of long ???
  8268.  08h    WORD    high part of long ???
  8269.  0Ah    WORD    low part of long ???
  8270.  0Ch    WORD    high part of long ???
  8271.  0Eh    WORD    low part of long ???
  8272.  10h    WORD    high part of long ???
  8273.  12h    WORD    low part of long ???
  8274. ----------92E101BX0000-----------------------
  8275. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  8276.     AX = E101h
  8277.     BX = 0000h
  8278.     CX:DX ignored
  8279. Return: AX = 0001h success
  8280. SeeAlso: AX=E100h
  8281. ----------92E102BX0000-----------------------
  8282. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  8283.     AX = E102h
  8284.     BX = 0000h
  8285.     CX:DX ignored
  8286. Return: AX = 0001h success
  8287. Note:    this function is used to determine if the dispatcher is loaded
  8288. SeeAlso: AX=E10Bh,AX=E180h
  8289. ----------92E103BX0000-----------------------
  8290. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  8291.     AX = E103h
  8292.     BX = 0000h
  8293.     CX:DX ignored
  8294. Return: AX = status (see AH=E1h)
  8295. SeeAlso: AX=E100h
  8296. ----------92E104BX0006-----------------------
  8297. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  8298.     AX = E104h
  8299.     BX = 0006h
  8300.     CX:DX -> parameter block (see below)
  8301. Return: AX = status (see AH=E1h)
  8302. Note:    this function is used to verify node address for usernames
  8303.  
  8304. Format of parameter block:
  8305. Offset    Size    Description
  8306.  00h    WORD    segment of node address buffer
  8307.  02h    WORD    offset of node address buffer
  8308.  04h    WORD    segment of uppercase username
  8309.  06h    WORD    offset of uppercase username
  8310.  08h    WORD    segment of "DVSEMAIL"
  8311.  0Ah    WORD    offset of "DVSEMAIL"
  8312. ----------92E105BX0007-----------------------
  8313. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  8314.     AX = E105h
  8315.     BX = 0007h
  8316.     CX:DX -> parameter block (see below)
  8317. Return: AX = 0000h Error
  8318.     AX = handle
  8319. Note:    this function is used to open a submission channel
  8320. SeeAlso: AX=E10Ah
  8321.  
  8322. Format of parameter block:
  8323. Offset    Size    Description
  8324.  00h    WORD    operation (1 = read, 2 = write)
  8325.  02h    WORD    segment of uppercase To: username
  8326.  04h    WORD    offset of uppercase To: username
  8327.  06h    WORD    segment of "DVSEMAIL"
  8328.  08h    WORD    offset of "DVSEMAIL"
  8329.  0Ah    WORD    segment of node address
  8330.  0Ch    WORD    offset of node address
  8331. ----------92E106BX0004-----------------------
  8332. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  8333.     AX = E106h
  8334.     BX = 0004h
  8335.     CX:DX -> parameter block
  8336. Return: AX = 0001h
  8337. SeeAlso: AX=E108h
  8338. ----------92E107BX0002-----------------------
  8339. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  8340.     AX = E107h
  8341.     BX = 0002h
  8342.     CX:DX -> parameter block
  8343. Return: AX = 0001h
  8344. ----------92E108BX0004-----------------------
  8345. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  8346.     AX = E108h
  8347.     BX = 0004h
  8348.     CX:DX -> parameter block (see below)
  8349. Return: AX = amount written
  8350. Note:    this function is used to write transactions to the dispatcher.
  8351.       The command block is written first and then another call is used
  8352.       to write the associated data.
  8353. SeeAlso: AX=E106h
  8354.  
  8355. Format of parameter block:
  8356. Offset    Size    Description
  8357.  00h    WORD    buffer count
  8358.  02h    WORD    segment of command buffer
  8359.  04h    WORD    offset of command buffer
  8360.  06h    WORD    handle from NetOpen
  8361.  
  8362. Format of command buffer:
  8363. Offset    Size    Description
  8364.  00h    BYTE    command
  8365.         21h '!' Protocol commands for remote control
  8366.         41h 'A' Authorization protocol element
  8367.         42h 'B' Return(back) routing information
  8368.             Associated data is the From: username
  8369.         43h 'C' Carbon Copy list
  8370.             Associated data is a comma delimitted list of usernames
  8371.         44h 'D' Distribution list
  8372.             Associated data is a comma delimitted list of usernames
  8373.         45h 'E' Mail end marker
  8374.             No associated data
  8375.         48h 'H' Mail message header
  8376.             Associated data is a message header buffer
  8377.         4Dh 'M' Mail message
  8378.             Associated data is the body of the message
  8379.         4Fh 'O' Object
  8380.         50h 'P' Paperclip attachment
  8381.         52h 'R' Routing information
  8382.             Associated data is the To: username
  8383.         53h 'S' Subject
  8384.             Associated data is the subject of the message
  8385.         54h 'T' Trail of Reply/Forwards
  8386.  01h    BYTE    subcommand
  8387.  02h    DWORD    length of associated data
  8388.  
  8389. Format of message header buffer:
  8390. Offset    Size    Description
  8391.  00h 30 BYTEs    subject line
  8392.  1Eh 24 BYTEs    To
  8393.  36h 24 BYTEs    From
  8394.  4Eh    DWORD    Time
  8395.         BYTE    0
  8396.         BYTE    hour
  8397.         BYTE    minute
  8398.         BYTE    second
  8399.  52h    DWORD    Date
  8400.         BYTE    0
  8401.         BYTE    year
  8402.         BYTE    month
  8403.         BYTE    day
  8404.  56h    DWORD    serial number (0L)
  8405.  5Ah    WORD    mail types
  8406.         bit 7    blind carbon copy
  8407.         bit 6    carbon copy
  8408.         bit 5    priority
  8409.         bit 4    confidential
  8410.         bit 3    certified
  8411.         bit 2    bulk
  8412.         bits 1-0 class (first, second, third, bulk)
  8413.  5Ch    WORD    special types (0)
  8414. ----------92E109BX0001-----------------------
  8415. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  8416.     AX = E109h
  8417.     BX = 0001h
  8418.     CX:DX -> ???
  8419. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  8420. ----------92E10ABX0001-----------------------
  8421. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  8422.     AX = E10Ah
  8423.     BX = 0001h
  8424.     CX:DX -> parameter block (see below)
  8425. Return: AX = 0001h
  8426. Note:    this function is used to close a dispatcher handle
  8427. SeeAlso: AX=E105h
  8428.  
  8429. Format of parameter block:
  8430. Offset    Size    Description
  8431.  00h    WORD    handle from NetOpen
  8432. ----------92E10BBX0004-----------------------
  8433. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  8434.     AX = E10Bh
  8435.     BX = 0004h
  8436.     CX:DX -> parameter block (see below)
  8437. Return: AX = 0001h
  8438. SeeAlso: AX=E102h,AX=E10Ch
  8439.  
  8440. Format of parameter block:
  8441. Offset    Size    Description
  8442.  00h    WORD    segment of 24 byte username buffer
  8443.  02h    WORD    offset of 24 byte username buffer
  8444.  04h    WORD    segment of 24 byte protocol buffer
  8445.  06h    WORD    offset of 24 byte protocol buffer
  8446. ----------92E10CBX0002-----------------------
  8447. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  8448.     AX = E10Ch
  8449.     BX = 0002h
  8450.     CX:DX -> parameter block (see below)
  8451. Return: AX = 0001h
  8452. SeeAlso: AX=E10Bh
  8453.  
  8454. Format of parameter block:
  8455. Offset    Size    Description
  8456.  00h    WORD    Segment of 128 byte node address buffer
  8457.  02h    WORD    Offset of 128 byte node address buffer
  8458. ----------92E10DBX0006-----------------------
  8459. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  8460.     AX = E10Dh
  8461.     BX = 0006h
  8462.     CX:DX -> parameter block (see below)
  8463. Return: AX = status (see AH=E1h)
  8464. Note:    this function is used to verify username/password
  8465. SeeAlso: AX=E10Eh
  8466.  
  8467. Format of parameter block:
  8468. Offset    Size    Description
  8469.  00h    WORD    segment of uppercase password string
  8470.  02h    WORD    offset of uppercase password string
  8471.  04h    WORD    segment of uppercase username string
  8472.  06h    WORD    offset of uppercase username string
  8473.  08h    WORD    segment of "DVSEMAIL"
  8474.  0Ah    WORD    offset of "DVSEMAIL"
  8475. ----------92E10EBX0004-----------------------
  8476. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  8477.     AX = E10Eh
  8478.     BX = 0004h
  8479.     CX:DX -> parameter block (see below)
  8480. Return: AX = 0001h
  8481. Note:    this function is used to remove a username
  8482. SeeAlso: AX=E10Dh
  8483.  
  8484. Format of parameter block:
  8485. Offset    Type    Description
  8486.  00h    WORD    segment of uppercase username
  8487.  02h    WORD    offset of uppercase username
  8488.  04h    WORD    segment of "DVSEMAIL"
  8489.  06h    WORD    offset of "DVSEMAIL"
  8490. ----------92E10FBX0000-----------------------
  8491. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  8492.     AX = E10Fh
  8493.     BX = 0000h
  8494.     CX:DX ignored
  8495. Return: AX = 0001h
  8496. ----------92E110BX0006-----------------------
  8497. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  8498.     AX = E110h
  8499.     BX = 0006h
  8500.     CX:DX -> ???
  8501. Return: AX = 0001h
  8502. SeeAlso: AX=E111h,AX=E113h
  8503. ----------92E111BX0004-----------------------
  8504. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  8505.     AX = E111h
  8506.     BX = 0004h
  8507.     CX:DX -> ???
  8508. Return: AX = 0001h
  8509. SeeAlso: AX=E110h,AX=E113h
  8510. ----------92E112BX0008-----------------------
  8511. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  8512.     AX = E112h
  8513.     BX = 0008h
  8514.     CX:DX -> ???
  8515. Return: AX = 0001h
  8516. ----------92E113BX0008-----------------------
  8517. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  8518.     AX = E113h
  8519.     BX = 0008h
  8520.     CX:DX -> ???
  8521. Return: AX = 0001h
  8522. SeeAlso: AX=E110h,AX=E111h
  8523. ----------92E175-----------------------------
  8524. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  8525.     AX = E175h
  8526. Return: AX = 0012h
  8527.     BX = PSP
  8528. ----------92E180-----------------------------
  8529. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  8530.     AX = E180h
  8531. Return: AX = 0012h if installed
  8532.     ES:DX -> '$'-terminated driver information string
  8533. SeeAlso: AX=E102h
  8534. ----------93---------------------------------
  8535. INT 93 - used by IBM ROM BASIC while in interpreter
  8536. Notes:    called by ROM BASIC
  8537.     BASIC.COM/BASICA.COM do not restore vector on termination
  8538. ----------93---------------------------------
  8539. INT 93 - IBM TOKEN RING ADAPTER - ???
  8540. ----------94---------------------------------
  8541. INT 94 - used by IBM ROM BASIC while in interpreter
  8542. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8543.     BASIC.COM/BASICA.COM do not restore vector on termination
  8544. ----------95---------------------------------
  8545. INT 95 - used by IBM ROM BASIC while in interpreter
  8546. Notes:    called by ROM BASIC
  8547.     BASIC.COM/BASICA.COM do not restore vector on termination
  8548. ----------95---------------------------------
  8549. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  8550. Note:    use only when the R= option is invoked on entering APL
  8551. ----------96---------------------------------
  8552. INT 96 - used by IBM ROM BASIC while in interpreter
  8553. Notes:    called by ROM BASIC
  8554.     BASIC.COM/BASICA.COM do not restore vector on termination
  8555. ----------97---------------------------------
  8556. INT 97 - used by IBM ROM BASIC while in interpreter
  8557. Notes:    called by ROM BASIC
  8558.     BASIC.COM/BASICA.COM do not restore vector on termination
  8559. ----------98---------------------------------
  8560. INT 98 - used by IBM ROM BASIC while in interpreter
  8561. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8562.     BASIC.COM/BASICA.COM do not restore vector on termination
  8563. ----------99---------------------------------
  8564. INT 99 - used by IBM ROM BASIC while in interpreter
  8565. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8566.     BASIC.COM/BASICA.COM do not restore vector on termination
  8567. ----------9A---------------------------------
  8568. INT 9A - used by IBM ROM BASIC while in interpreter
  8569. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8570.     BASIC.COM/BASICA.COM do not restore vector on termination
  8571. ----------9B---------------------------------
  8572. INT 9B - used by IBM ROM BASIC while in interpreter
  8573. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8574.     BASIC.COM/BASICA.COM do not restore vector on termination
  8575. ----------9C---------------------------------
  8576. INT 9C - used by IBM ROM BASIC while in interpreter
  8577. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8578.     BASIC.COM/BASICA.COM do not restore vector on termination
  8579. ----------9D---------------------------------
  8580. INT 9D - used by IBM ROM BASIC while in interpreter
  8581. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8582.     BASIC.COM/BASICA.COM do not restore vector on termination
  8583. ----------9E---------------------------------
  8584. INT 9E - used by IBM ROM BASIC while in interpreter
  8585. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8586.     BASIC.COM/BASICA.COM do not restore vector on termination
  8587. ----------9F---------------------------------
  8588. INT 9F - used by IBM ROM BASIC while in interpreter
  8589. Notes:    called by ROM BASIC
  8590.     BASIC.COM/BASICA.COM do not restore vector on termination
  8591. ----------A0---------------------------------
  8592. INT A0 - used by IBM ROM BASIC while in interpreter
  8593. Notes:    called by ROM BASIC
  8594.     BASIC.COM/BASICA.COM do not restore vector on termination
  8595. ----------A0---------------------------------
  8596. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  8597. SeeAlso: INT 59
  8598. ----------A1---------------------------------
  8599. INT A1 - used by IBM ROM BASIC while in interpreter
  8600. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8601.     BASIC.COM/BASICA.COM do not restore vector on termination
  8602. ----------A2---------------------------------
  8603. INT A2 - used by IBM ROM BASIC while in interpreter
  8604. Notes:    called by ROM BASIC
  8605.     BASIC.COM/BASICA.COM do not restore vector on termination
  8606. ----------A3---------------------------------
  8607. INT A3 - used by IBM ROM BASIC while in interpreter
  8608. Notes:    called by ROM BASIC
  8609.     BASIC.COM/BASICA.COM do not restore vector on termination
  8610. ----------A4---------------------------------
  8611. INT A4 - used by IBM ROM BASIC while in interpreter
  8612. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8613.     BASIC.COM/BASICA.COM do not restore vector on termination
  8614. ----------A4---------------------------------
  8615. INT A4 - Right Hand Man API
  8616.     function number in AH
  8617. Note: Right-Hand Man is a TSR desk-top utility, and only hooks this interrupt
  8618.     while popped up
  8619. ----------A5---------------------------------
  8620. INT A5 - used by IBM ROM BASIC while in interpreter
  8621. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8622.     BASIC.COM/BASICA.COM do not restore vector on termination
  8623. ----------A6---------------------------------
  8624. INT A6 - used by IBM ROM BASIC while in interpreter
  8625. Notes:    called by ROM BASIC
  8626.     BASIC.COM/BASICA.COM do not restore vector on termination
  8627. ----------A7---------------------------------
  8628. INT A7 - used by IBM ROM BASIC while in interpreter
  8629. Notes:    called by ROM BASIC
  8630.     BASIC.COM/BASICA.COM do not restore vector on termination
  8631. ----------A8---------------------------------
  8632. INT A8 - used by IBM ROM BASIC while in interpreter
  8633. Notes:    called by ROM BASIC
  8634.     BASIC.COM/BASICA.COM do not restore vector on termination
  8635. ----------A9---------------------------------
  8636. INT A9 - used by IBM ROM BASIC while in interpreter
  8637. Notes:    called by ROM BASIC
  8638.     BASIC.COM/BASICA.COM do not restore vector on termination
  8639. ----------AA---------------------------------
  8640. INT AA - used by IBM ROM BASIC while in interpreter
  8641. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8642.     BASIC.COM/BASICA.COM do not restore vector on termination
  8643. ----------AB---------------------------------
  8644. INT AB - used by IBM ROM BASIC while in interpreter
  8645. Notes:    called by ROM BASIC
  8646.     BASIC.COM/BASICA.COM do not restore vector on termination
  8647. ----------AC---------------------------------
  8648. INT AC - used by IBM ROM BASIC while in interpreter
  8649. Notes:    called by ROM BASIC
  8650.     BASIC.COM/BASICA.COM do not restore vector on termination
  8651. ----------AD---------------------------------
  8652. INT AD - used by IBM ROM BASIC while in interpreter
  8653. Notes:    called by ROM BASIC
  8654.     BASIC.COM/BASICA.COM do not restore vector on termination
  8655. ----------AE---------------------------------
  8656. INT AE - used by IBM ROM BASIC while in interpreter
  8657. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8658.     BASIC.COM/BASICA.COM do not restore vector on termination
  8659. ----------AF---------------------------------
  8660. INT AF - used by IBM ROM BASIC while in interpreter
  8661. Notes:    called by ROM BASIC
  8662.     BASIC.COM/BASICA.COM do not restore vector on termination
  8663. ----------B0---------------------------------
  8664. INT B0 - used by IBM ROM BASIC while in interpreter
  8665. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8666.     BASIC.COM/BASICA.COM do not restore vector on termination
  8667. ----------B1---------------------------------
  8668. INT B1 - used by IBM ROM BASIC while in interpreter
  8669. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8670.     BASIC.COM/BASICA.COM do not restore vector on termination
  8671. ----------B2---------------------------------
  8672. INT B2 - used by IBM ROM BASIC while in interpreter
  8673. Notes:    called by ROM BASIC
  8674.     BASIC.COM/BASICA.COM do not restore vector on termination
  8675. ----------B3---------------------------------
  8676. INT B3 - used by IBM ROM BASIC while in interpreter
  8677. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8678.     BASIC.COM/BASICA.COM do not restore vector on termination
  8679. ----------B370-------------------------------
  8680. INT B3 - ZIPKEY - GET VERSION
  8681.     AH = 70h
  8682. Return: AH = major version
  8683.     AL = minor version
  8684.     CL = number of states and territories in current database
  8685.     DH = year of current database - 1900
  8686.     DL = month of current database's file date
  8687. Return: AX destroyed
  8688. Notes:    if installed, the string "ZIPKEY" is present at offset 75h in the
  8689.       interrupt handler's segment, and the byte at 7Bh contains the API
  8690.       version number (00h for v1.x, 01h for v2.0)
  8691.     ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  8692. ----------B371-------------------------------
  8693. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  8694.     AH = 71h
  8695.     BX = abbreviation, in either case (first letter in BL)
  8696. Return: CF set on error
  8697.         AL = FFh
  8698.     CF clear if successful
  8699.         AL = ZIPKEY state code
  8700. SeeAlso: AH=72h
  8701. ----------B372-------------------------------
  8702. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  8703.     AH = 72h
  8704.     BL = ZIPKEY state code
  8705. Return: CF set on error
  8706.         AX destroyed
  8707.     CF clear if successful
  8708.         AX = abbreviation, in upper case
  8709. SeeAlso: AH=71h,AH=73h
  8710. ----------B373-------------------------------
  8711. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  8712.     AH = 73h
  8713.     BL = ZIPKEY state code
  8714.     ES:DI -> buffer for name
  8715. Return: CF set on error
  8716.         AX destroyed
  8717.     CF clear if successful
  8718.         ES:DI points one byte beyond end of name
  8719. SeeAlso: AH=72h
  8720. ----------B374-------------------------------
  8721. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  8722.     AH = 74h
  8723.     DX = zipcode region (0-999)
  8724.     CH = last two digits of zipcode (0-99)
  8725.     ES:DI -> buffer
  8726. Return: CF set on error
  8727.         AX destroyed
  8728.     CF clear if successful
  8729.         ES:DI points one byte beyond end of digit string
  8730. ----------B375-------------------------------
  8731. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  8732.     AH = 75h
  8733.     DX = zipcode region (0-999)
  8734.     CH = last two digits of zipcode (0-99)
  8735. Return: CF set on error (zipcode not found)
  8736.         AL = suggested state code, FFh if none
  8737.     CF clear if successful
  8738.         AL = ZIPKEY state code
  8739.         BX = area code (v2.0+)
  8740. SeeAlso: AH=76h,AH=79h
  8741. ----------B376-------------------------------
  8742. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  8743.     AH = 76h
  8744.     DX = zipcode region (0-999)
  8745.     CH = last two digits of zipcode (0-99)
  8746.     ES:DI -> buffer for name
  8747. Return: CF set on error
  8748.         AL = suggested state code, FFh if none
  8749.         ES:DI buffer filled with suggested city name
  8750.     CF clear if successful
  8751.         AL = ZIPKEY state code
  8752.         BX = area code (v2.0+)
  8753.         ES:DI points one byte beyond end of name
  8754. SeeAlso: AH=75h,AH=78h
  8755. ----------B377-------------------------------
  8756. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  8757.     AH = 77h
  8758.     DX = zipcode region (0-999)
  8759.     CH = last two digits of zipcode (0-99)
  8760.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  8761. Return: CF set on error
  8762.         AX destroyed
  8763.     CF clear if successful    
  8764.         zipcode specification as defined by the BX keystroke is placed in
  8765.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  8766.           by pressing the key specified by BX
  8767. ----------B378-------------------------------
  8768. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  8769.     AH = 78h
  8770.     BL = ZIPKEY state code
  8771.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  8772. Return: BH = number of matching entries (set to 51 if more than 50)
  8773.     DX = zipcode region of first match (0-999)
  8774.     CL = last two digits of first zipcode in the range (0-99)
  8775.     CH = last two digits of last zipcode in the range (0-99)
  8776.     AX destroyed
  8777. SeeAlso: AH=79h,AH=7Ah
  8778. ----------B379-------------------------------
  8779. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  8780.     AH = 79h
  8781.     BL = ZIPKEY state code of first state to search
  8782.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  8783. Return:    AL = ZIPKEY state code of first matching state
  8784.     BH = number of matching entries (set to 51 if more than 50)
  8785.     DX = zipcode region of first match (0-999)
  8786.     CL = last two digits of first zipcode in first range (0-99)
  8787.     CH = last two digits of last zipcode in first range (0-99)
  8788. Note:    to find all matching cities, repeat search with BL set to one more than
  8789.       the returned AL
  8790. SeeAlso: AH=78h,AH=7Ah
  8791. ----------B37A-------------------------------
  8792. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  8793.     AH = 7Ah
  8794.     BL = case number (0 to one less than value returned in BH by lookup)
  8795. Return: AL = ZIPKEY state code
  8796.     DX = zipcode region (0-999)
  8797.     CL = last two digits of first zipcode in the range (0-99)
  8798.     CH = last two digits of last zipcode in the range (0-99)
  8799. SeeAlso: AH=78h,AH=79h
  8800. ----------B37B-------------------------------
  8801. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  8802.     AH = 7Bh
  8803. Return: BL = maximum number of characters for a city name
  8804.     BH = ZIPKEY state code for last city-name search
  8805.         FFh if none
  8806.     CX:DX = internal code identifying last city search
  8807.     AX destroyed
  8808. SeeAlso: AH=7Ch
  8809. ----------B37C-------------------------------
  8810. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  8811.     AH = 7Ch
  8812.     BL = maximum number of characters for a city name
  8813.     BH = ZIPKEY state code for last city-name search
  8814.         FFh if none
  8815.     CX:DX = internal code returned by AH=7Bh
  8816. Return: CF set on error
  8817.     CF clear if successful
  8818.     AX destroyed
  8819. SeeAlso: AH=7Bh
  8820. ----------B37D-------------------------------
  8821. INT B3 - ZIPKEY - REQUEST POP UP
  8822.     AH = 7Dh
  8823.     BL = index number to simulate pressing a hotkey
  8824.         FFh for immediate popup with no playback on return
  8825. Return: CF set on error
  8826.         AL = FDh already busy with another request
  8827.            = FEh illegal function
  8828.     CF clear if successful
  8829.         AX destroyed
  8830.         window popped up and was closed by the user
  8831. ----------B37E-------------------------------
  8832. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  8833.     AH = 7Eh
  8834.     DX = zipcode region (0-999)
  8835.     ES:DI -> buffer for name
  8836. Return: CF set on error
  8837.         AL = FFh region does not exist
  8838.     CF clear if successful
  8839.         AL = ZIPKEY state code
  8840.         ES:DI points one byte beyond end of name
  8841. ----------B37F-------------------------------
  8842. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  8843.     AH = 7Fh
  8844.     BL = function
  8845.         00h turn off hotkeys
  8846.         01h turn on hotkeys
  8847.         02h return hotkey status
  8848.         03h toggle hotkey status
  8849. Return: AL = hotkey status
  8850.         00h off
  8851.         01h on
  8852. ----------B380-------------------------------
  8853. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  8854.     AH = 80h
  8855.     BX = telephone area code (decimal)
  8856. Return: CF clear if successful
  8857.         AL = ZIPKEY state code
  8858.         DX = first ZIP region for state (03E8h if Canada)
  8859.         CX = number of ZIP regions in state
  8860.     CF set on error
  8861.         AL = FFh
  8862.         DX = 03E9h
  8863. ----------B4---------------------------------
  8864. INT B4 - used by IBM ROM BASIC while in interpreter
  8865. Notes:    called by ROM BASIC
  8866.     BASIC.COM/BASICA.COM do not restore vector on termination
  8867. ----------B5---------------------------------
  8868. INT B5 - used by IBM ROM BASIC while in interpreter
  8869. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8870.     BASIC.COM/BASICA.COM do not restore vector on termination
  8871. ----------B6---------------------------------
  8872. INT B6 - used by IBM ROM BASIC while in interpreter
  8873. Notes:    called by ROM BASIC
  8874.     BASIC.COM/BASICA.COM do not restore vector on termination
  8875. ----------B7---------------------------------
  8876. INT B7 - used by IBM ROM BASIC while in interpreter
  8877. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8878.     BASIC.COM/BASICA.COM do not restore vector on termination
  8879. ----------B8---------------------------------
  8880. INT B8 - used by IBM ROM BASIC while in interpreter
  8881. Notes:    called by ROM BASIC
  8882.     BASIC.COM/BASICA.COM do not restore vector on termination
  8883. ----------B9---------------------------------
  8884. INT B9 - used by IBM ROM BASIC while in interpreter
  8885. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8886.     BASIC.COM/BASICA.COM do not restore vector on termination
  8887. ----------BA---------------------------------
  8888. INT BA - used by IBM ROM BASIC while in interpreter
  8889. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8890.     BASIC.COM/BASICA.COM do not restore vector on termination
  8891. ----------BB---------------------------------
  8892. INT BB - used by IBM ROM BASIC while in interpreter
  8893. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8894.     BASIC.COM/BASICA.COM do not restore vector on termination
  8895. ----------BC---------------------------------
  8896. INT BC - used by IBM ROM BASIC while in interpreter
  8897. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8898.     BASIC.COM/BASICA.COM do not restore vector on termination
  8899. ----------BD---------------------------------
  8900. INT BD - used by IBM ROM BASIC while in interpreter
  8901. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8902.     BASIC.COM/BASICA.COM do not restore vector on termination
  8903. ----------BE---------------------------------
  8904. INT BE - used by IBM ROM BASIC while in interpreter
  8905. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8906.     BASIC.COM/BASICA.COM do not restore vector on termination
  8907. ----------BF---------------------------------
  8908. INT BF - used by IBM ROM BASIC while in interpreter
  8909. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8910.     BASIC.COM/BASICA.COM do not restore vector on termination
  8911. ----------C0---------------------------------
  8912. INT C0 - used by IBM ROM BASIC while in interpreter
  8913. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8914.     BASIC.COM/BASICA.COM do not restore vector on termination
  8915. ----------C1---------------------------------
  8916. INT C1 - used by IBM ROM BASIC while in interpreter
  8917. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8918.     BASIC.COM/BASICA.COM do not restore vector on termination
  8919. ----------C2---------------------------------
  8920. INT C2 - used by IBM ROM BASIC while in interpreter
  8921. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8922.     BASIC.COM/BASICA.COM do not restore vector on termination
  8923. ----------C3---------------------------------
  8924. INT C3 - used by IBM ROM BASIC while in interpreter
  8925. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8926.     BASIC.COM/BASICA.COM do not restore vector on termination
  8927. ----------C4---------------------------------
  8928. INT C4 - used by IBM ROM BASIC while in interpreter
  8929. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8930.     BASIC.COM/BASICA.COM do not restore vector on termination
  8931. ----------C5---------------------------------
  8932. INT C5 - used by IBM ROM BASIC while in interpreter
  8933. Notes:    called by ROM BASIC
  8934.     BASIC.COM/BASICA.COM do not restore vector on termination
  8935. ----------C6---------------------------------
  8936. INT C6 - used by IBM ROM BASIC while in interpreter
  8937. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8938.     BASIC.COM/BASICA.COM do not restore vector on termination
  8939. ----------C6---------------------------------
  8940. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  8941. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8942.       the older interrupts
  8943. ----------C7---------------------------------
  8944. INT C7 - used by IBM ROM BASIC while in interpreter
  8945. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8946.     BASIC.COM/BASICA.COM do not restore vector on termination
  8947. ----------C7---------------------------------
  8948. INT C7 - APL*PLUS/PC - ???
  8949. ----------C8---------------------------------
  8950. INT C8 - used by IBM ROM BASIC while in interpreter
  8951. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8952.     BASIC.COM/BASICA.COM do not restore vector on termination
  8953. ----------C8---------------------------------
  8954. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  8955. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8956.       the older interrupts
  8957. SeeAlso: INT 88"APL"
  8958. ----------C9---------------------------------
  8959. INT C9 - used by IBM ROM BASIC while in interpreter
  8960. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8961.     BASIC.COM/BASICA.COM do not restore vector on termination
  8962. ----------C9---------------------------------
  8963. INT C9 - APL*PLUS/PC - ???
  8964. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8965.       the older interrupts
  8966. ----------CA---------------------------------
  8967. INT CA - used by IBM ROM BASIC while in interpreter
  8968. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8969.     BASIC.COM/BASICA.COM do not restore vector on termination
  8970. ----------CA---------------------------------
  8971. INT CA - APL*PLUS/PC - PRINT SCREEN
  8972. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8973.       the older interrupts
  8974. SeeAlso: INT 8A"APL"
  8975. ----------CB---------------------------------
  8976. INT CB - used by IBM ROM BASIC while in interpreter
  8977. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8978.     BASIC.COM/BASICA.COM do not restore vector on termination
  8979. ----------CB---------------------------------
  8980. INT CB - APL*PLUS/PC - BEEP
  8981. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8982.       the older interrupts
  8983.     same as printing a ^G via INT 21/AH=02h
  8984. SeeAlso: INT 8B"APL"
  8985. ----------CC---------------------------------
  8986. INT CC - used by IBM ROM BASIC while in interpreter
  8987. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  8988.     BASIC.COM/BASICA.COM do not restore vector on termination
  8989. ----------CC---------------------------------
  8990. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  8991.     AX = flag
  8992.         0000h do not save display attributes
  8993.         0001h save attributes
  8994. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  8995.       the older interrupts
  8996. SeeAlso: INT 8C"APL"
  8997. ----------CD---------------------------------
  8998. INT CD - used by IBM ROM BASIC while in interpreter
  8999. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9000.     BASIC.COM/BASICA.COM do not restore vector on termination
  9001. ----------CD---------------------------------
  9002. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9003. ----------CE---------------------------------
  9004. INT CE - used by IBM ROM BASIC while in interpreter
  9005. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9006.     BASIC.COM/BASICA.COM do not restore vector on termination
  9007. ----------CE---------------------------------
  9008. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9009. ----------CF---------------------------------
  9010. INT CF - used by IBM ROM BASIC while in interpreter
  9011. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9012.     BASIC.COM/BASICA.COM do not restore vector on termination
  9013. ----------CF---------------------------------
  9014. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  9015. ----------D0---------------------------------
  9016. INT D0 - used by IBM ROM BASIC while in interpreter
  9017. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9018.     BASIC.COM/BASICA.COM do not restore vector on termination
  9019. ----------D0---------------------------------
  9020. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9021. ----------D1---------------------------------
  9022. INT D1 - used by IBM ROM BASIC while in interpreter
  9023. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9024.     BASIC.COM/BASICA.COM do not restore vector on termination
  9025. ----------D1---------------------------------
  9026. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9027. ----------D2---------------------------------
  9028. INT D2 - used by IBM ROM BASIC while in interpreter
  9029. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9030.     BASIC.COM/BASICA.COM do not restore vector on termination
  9031. ----------D2---------------------------------
  9032. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9033. ----------D3---------------------------------
  9034. INT D3 - used by IBM ROM BASIC while in interpreter
  9035. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9036.     BASIC.COM/BASICA.COM do not restore vector on termination
  9037. ----------D3---------------------------------
  9038. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9039. ----------D4---------------------------------
  9040. INT D4 - used by IBM ROM BASIC while in interpreter
  9041. Notes:    called by ROM BASIC
  9042.     BASIC.COM/BASICA.COM do not restore vector on termination
  9043. ----------D4---------------------------------
  9044. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9045. ----------D4---------------------------------
  9046. INT D4 - PC-MOS/386 - API
  9047. ----------D5---------------------------------
  9048. INT D5 - used by IBM ROM BASIC while in interpreter
  9049. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9050.     BASIC.COM/BASICA.COM do not restore vector on termination
  9051. ----------D5---------------------------------
  9052. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9053. ----------D6---------------------------------
  9054. INT D6 - used by IBM ROM BASIC while in interpreter
  9055. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9056.     BASIC.COM/BASICA.COM do not restore vector on termination
  9057. ----------D6---------------------------------
  9058. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9059. ----------D7---------------------------------
  9060. INT D7 - used by IBM ROM BASIC while in interpreter
  9061. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9062.     BASIC.COM/BASICA.COM do not restore vector on termination
  9063. ----------D7---------------------------------
  9064. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9065. ----------D8---------------------------------
  9066. INT D8 - used by IBM ROM BASIC while in interpreter
  9067. Notes:    called by ROM BASIC
  9068.     BASIC.COM/BASICA.COM do not restore vector on termination
  9069. ----------D8---------------------------------
  9070. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9071. ----------D9---------------------------------
  9072. INT D9 - used by IBM ROM BASIC while in interpreter
  9073. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9074.     BASIC.COM/BASICA.COM do not restore vector on termination
  9075. ----------D9---------------------------------
  9076. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9077. ----------DA---------------------------------
  9078. INT DA - used by IBM ROM BASIC while in interpreter
  9079. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9080.     BASIC.COM/BASICA.COM do not restore vector on termination
  9081. ----------DA---------------------------------
  9082. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9083. ----------DB---------------------------------
  9084. INT DB - used by IBM ROM BASIC while in interpreter
  9085. Notes:    called by ROM BASIC
  9086.     BASIC.COM/BASICA.COM do not restore vector on termination
  9087. ----------DB---------------------------------
  9088. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9089. ----------DC---------------------------------
  9090. INT DC - PC/370 v4.1- - API
  9091. SeeAlso: INT 60"PC/370"
  9092. ----------DC---------------------------------
  9093. INT DC - used by IBM ROM BASIC while in interpreter
  9094. Notes:    called by ROM BASIC
  9095.     BASIC.COM/BASICA.COM do not restore vector on termination
  9096. ----------DC---------------------------------
  9097. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  9098. ----------DD---------------------------------
  9099. INT DD - used by IBM ROM BASIC while in interpreter
  9100. Notes:    called by ROM BASIC
  9101.     BASIC.COM/BASICA.COM do not restore vector on termination
  9102. ----------DD---------------------------------
  9103. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  9104.     BX = where to place keystrokes
  9105.         FFFFh insert before current buffer contents
  9106.         0000h replace current contents
  9107.         0001h insert after current contents
  9108.     CX = number of keystroke events to insert
  9109.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  9110.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  9111.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  9112. SeeAlso: INT 16/AH=05h
  9113. ----------DE---------------------------------
  9114. INT DE - used by IBM ROM BASIC while in interpreter
  9115. Notes:    called by ROM BASIC
  9116.     BASIC.COM/BASICA.COM do not restore vector on termination
  9117. ----------DE---------------------------------
  9118. INT DE - APL*PLUS/PC - ???
  9119. Note:    appears to be the same as INT 16
  9120. ----------DF---------------------------------
  9121. INT DF - Victor 9000 - SuperBIOS
  9122. ----------DF---------------------------------
  9123. INT DF - used by IBM ROM BASIC while in interpreter
  9124. Notes:    called by ROM BASIC
  9125.     BASIC.COM/BASICA.COM do not restore vector on termination
  9126. ----------DF---------------------------------
  9127. INT DF - APL*PLUS/PC - SAME AS INT 10
  9128. SeeAlso: INT 10
  9129. ----------E0---------------------------------
  9130. INT E0 - CP/M-86 function calls
  9131. ----------E0---------------------------------
  9132. INT E0 - used by IBM ROM BASIC while in interpreter
  9133. Notes:    called by ROM BASIC
  9134.     BASIC.COM/BASICA.COM do not restore vector on termination
  9135. ----------E0---------------------------------
  9136. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  9137. ----------E0---------------------------------
  9138. INT E0 - VIRUS - "Micro-128" - ???
  9139. Note:    Micro-128 also overwrites the upper half of the interrupt table
  9140. SeeAlso: INT 70"VIRUS"
  9141. ----------E1---------------------------------
  9142. INT E1 - used by IBM ROM BASIC while in interpreter
  9143. Notes:    called by ROM BASIC
  9144.     BASIC.COM/BASICA.COM do not restore vector on termination
  9145. ----------E1---------------------------------
  9146. INT E1 - PC Cluster Disk Server Information
  9147. SeeAlso: INT E2
  9148. ----------E2---------------------------------
  9149. INT E2 - used by IBM ROM BASIC while in interpreter
  9150. Notes:    called by ROM BASIC
  9151.     BASIC.COM/BASICA.COM do not restore vector on termination
  9152. ----------E2---------------------------------
  9153. INT E2 - PC Cluster Program
  9154. ----------E3---------------------------------
  9155. INT E3 - used by IBM ROM BASIC while in interpreter
  9156. Notes:    called by ROM BASIC
  9157.     BASIC.COM/BASICA.COM do not restore vector on termination
  9158. ----------E40005-----------------------------
  9159. INT E4 - Logitech Modula v2.0 - MonitorEntry
  9160.     AX = 0005h
  9161.     BX = priority
  9162. SeeAlso: AX=0006h
  9163. ----------E40006-----------------------------
  9164. INT E4 - Logitech Modula v2.0 - MonitorExit
  9165.     AX = 0006h
  9166. SeeAlso: AX=0005h
  9167. ----------E4---------------------------------
  9168. INT E4 - used by IBM ROM BASIC while in interpreter
  9169. Notes:    called by ROM BASIC
  9170.     BASIC.COM/BASICA.COM do not restore vector on termination
  9171. ----------E5---------------------------------
  9172. INT E5 - used by IBM ROM BASIC while in interpreter
  9173. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9174.     BASIC.COM/BASICA.COM do not restore vector on termination
  9175. ----------E6---------------------------------
  9176. INT E6 - used by IBM ROM BASIC while in interpreter
  9177. Notes:    called by ROM BASIC
  9178.     BASIC.COM/BASICA.COM do not restore vector on termination
  9179. ----------E7---------------------------------
  9180. INT E7 - used by IBM ROM BASIC while in interpreter
  9181. Notes:    called by ROM BASIC
  9182.     BASIC.COM/BASICA.COM do not restore vector on termination
  9183. ----------E8---------------------------------
  9184. INT E8 - used by IBM ROM BASIC while in interpreter
  9185. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9186.     BASIC.COM/BASICA.COM do not restore vector on termination
  9187. ----------E9---------------------------------
  9188. INT E9 - used by IBM ROM BASIC while in interpreter
  9189. Notes:    called by ROM BASIC
  9190.     BASIC.COM/BASICA.COM do not restore vector on termination
  9191. ----------EA---------------------------------
  9192. INT EA - used by IBM ROM BASIC while in interpreter
  9193. Notes:    called by ROM BASIC
  9194.     BASIC.COM/BASICA.COM do not restore vector on termination
  9195. ----------EB---------------------------------
  9196. INT EB - used by IBM ROM BASIC while in interpreter
  9197. Notes:    called by ROM BASIC
  9198.     BASIC.COM/BASICA.COM do not restore vector on termination
  9199. ----------EC---------------------------------
  9200. INT EC - used by IBM ROM BASIC while in interpreter
  9201. Notes:    called by ROM BASIC
  9202.     BASIC.COM/BASICA.COM do not restore vector on termination
  9203. ----------EC---------------------------------
  9204. INT EC - used by Alloy NTNX
  9205. ----------EC---------------------------------
  9206. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  9207.     AX = function number (0000h to 0140h)
  9208.     STACK:    DWORD address to return to
  9209.         any arguments required by function
  9210. Return: STACK:    return address popped, but otherwise unchanged
  9211. Notes:    this is the interface from applications to the runtime system by Exact
  9212.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  9213.       it can provide DLL-style capabilities under MSDOS.
  9214.     the interrupt handler removes the return address and flags placed on
  9215.       the stack by the INT EC, then jumps to the appropriate function
  9216. ----------ED---------------------------------
  9217. INT ED - used by IBM ROM BASIC while in interpreter
  9218. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9219.     BASIC.COM/BASICA.COM do not restore vector on termination
  9220. ----------EE---------------------------------
  9221. INT EE - used by IBM ROM BASIC while in interpreter
  9222. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  9223.     BASIC.COM/BASICA.COM do not restore vector on termination
  9224. ----------EF---------------------------------
  9225. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  9226. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  9227. SeeAlso: INT F0"BASIC"
  9228. ----------EF----CX0473-----------------------
  9229. INT EF - GEM - INTERFACE
  9230.     CX = 0473h
  9231.     DS:DX -> GEM parameter block
  9232. ----------F0---------------------------------
  9233. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  9234. Note:    BASICA.COM does not restore vector on termination
  9235. SeeAlso: INT EF"BASIC"
  9236. ----------F1---------------------------------
  9237. INT F1 - reserved for user interrupt
  9238. ----------F1---------------------------------
  9239. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  9240.     DS:BX -> '$'-terminated text string
  9241. Note:    SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  9242. ----------F1---------------------------------
  9243. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  9244. ----------F1---------------------------------
  9245. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  9246. Return: AX:BX -> data area
  9247. Notes:    AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  9248.       and COM2 in software
  9249.     The installation check consists of testing for the following signature
  9250.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  9251.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  9252.       version number
  9253. ----------F2---------------------------------
  9254. INT F2 - reserved for user interrupt
  9255. ----------F2---------------------------------
  9256. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  9257. ----------F3---------------------------------
  9258. INT F3 - reserved for user interrupt
  9259. ----------F4---------------------------------
  9260. INT F4 - reserved for user interrupt
  9261. ----------F4---------------------------------
  9262. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  9263. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  9264. ----------F5---------------------------------
  9265. INT F5 - reserved for user interrupt
  9266. ----------F5---------------------------------
  9267. INT F5 - DoubleDOS - ???
  9268. ----------F6---------------------------------
  9269. INT F6 - reserved for user interrupt
  9270. ----------F6---------------------------------
  9271. INT F6 - DoubleDOS - ???
  9272. ----------F7---------------------------------
  9273. INT F7 - reserved for user interrupt
  9274. ----------F7---------------------------------
  9275. INT F7 - DoubleDOS - ???
  9276. ----------F700-------------------------------
  9277. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  9278.     AH = 00h
  9279.     AL = function
  9280.         00h get configuration record
  9281.         Return: DS:DX -> configuration record
  9282.         01h set configuration record
  9283.         02h get path for option
  9284.         DS:DX -> option name
  9285.         Return: DS:DX -> path
  9286.         03h determine whether configuration record set
  9287.         Return: AX = status
  9288.                 0000h set
  9289.                 0001h not yet set
  9290.         04h get link state
  9291.         Return: AX = state
  9292.                 0000h unlinked
  9293.                 0001h linked
  9294. Notes:    this information is preliminary and still subject to change
  9295.     all of the INT F7 calls for FSBBS are used for interprogram
  9296.       communication between the BBS kernel and the programs it spawns
  9297. SeeAlso: AH=01h
  9298. ----------F701-------------------------------
  9299. INT F7 - FSBBS 2.0 - USER RECORD
  9300.     AH = 01h
  9301.     AL = function
  9302.         00h get user record for user currently online
  9303.         Return: DS:DX -> user record
  9304.         01h set user record
  9305.         DS:DX -> user record
  9306. SeeAlso: AH=00h,AH=02h
  9307. ----------F702-------------------------------
  9308. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  9309.     AH = 02h
  9310. Return: DS:DX -> 8-character blank-padded account name
  9311. SeeAlso: AH=01h
  9312. ----------F703-------------------------------
  9313. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  9314.     AH = 03h
  9315.     AL = function
  9316.         00h get terminal index number
  9317.         Return: DX = index number
  9318.         01h set terminal index number
  9319.         DX = terminal index
  9320. ----------F704-------------------------------
  9321. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  9322.     AH = 04h
  9323.     AL = function
  9324.         00h get PassData buffer contents
  9325.         DS:DX -> buffer for PassData contents
  9326.         01h set PassData contents
  9327.         DS:DX -> buffer containing new PassData
  9328.         CH = length of data in buffer
  9329. ----------F705-------------------------------
  9330. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  9331.     AH = 05h
  9332.     AL = function
  9333.         00h get time remaining
  9334.         Return: DX = number of minutes remaining
  9335.         01h get current time
  9336.         Return: DS:DX -> 8-character time string
  9337.         02h increment time
  9338.         DX = number of additional minutes
  9339.         03h decrement time
  9340.         DX = number of minutes
  9341. SeeAlso: AH=06h
  9342. ----------F706-------------------------------
  9343. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  9344.     AH = 06h
  9345.     AL = function
  9346.         00h determine whether function is available
  9347.         DX = index of function
  9348.         01h set function availability
  9349.         DX = index of function
  9350.         ???
  9351. SeeAlso: AH=05h,AH=07h
  9352. ----------F707-------------------------------
  9353. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  9354.     AH = 07h
  9355.     AL = function
  9356.         00h get current dump mode
  9357.         Return: DL = mode
  9358.         01h set dump mode
  9359.         DL = mode
  9360. SeeAlso: AH=06h
  9361. ----------F8---------------------------------
  9362. INT F8 - 10 ms INTERVAL TIMER (TANDY???)
  9363. ----------F8---------------------------------
  9364. INT F8 - DoubleDOS - ???
  9365. ----------F9---------------------------------
  9366. INT F9 - reserved for user interrupt
  9367. ----------F9---------------------------------
  9368. INT F9 - DoubleDOS - ???
  9369. ----------FA---------------------------------
  9370. INT FA - USART READY (RS-232C) (TANDY???)
  9371. ----------FA---------------------------------
  9372. INT FA - DoubleDOS - TURN OFF TIMESHARING
  9373. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  9374. ----------FB---------------------------------
  9375. INT FB - USART Rx READY (keyboard) (TANDY???)
  9376. ----------FB---------------------------------
  9377. INT FB - DoubleDOS - TURN ON TIMESHARING
  9378. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  9379. ----------FC---------------------------------
  9380. INT FC - reserved for user interrupt
  9381. ----------FC---------------------------------
  9382. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  9383. Return: ES = segment of display buffer
  9384. Note:    the display buffer may be moved if multitasking is enabled
  9385. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  9386. ----------FD---------------------------------
  9387. INT FD - reserved for user interrupt
  9388. ----------FD---------------------------------
  9389. INT FD - DoubleDOS - ???
  9390. ----------FE---------------------------------
  9391. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  9392. ----------FE---------------------------------
  9393. INT FE - DoubleDOS - GIVE UP TIME
  9394.     AL = number of 55ms time slices to give away
  9395. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  9396. ----------FE---------------------------------
  9397. INT FE - Turbo Debugger 8086 v2.5 - OVERLAY MANAGER
  9398. ----------FF---------------------------------
  9399. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  9400. ----------FF---------------------------------
  9401. INT FF - Z100 - WARM BOOT
  9402. ---------------------------------------------
  9403. Please redistribute the following files unmodified as a group, in a pair of
  9404. archives named INTER29A and INTER29B (preferably the original authenticated
  9405. PKZIP archives):
  9406.     INTERRUP.1ST    the read-me file, containing credits, availability info
  9407.     INTERRUP.A    INT 00 through INT 14
  9408.     INTERRUP.B    INT 15 through INT 1F
  9409.     INTERRUP.C    INT 20 through INT 21/7F
  9410.     INTERRUP.D    INT 21/80 through INT 2F/7F
  9411.     INTERRUP.E      INT 2F/80 through INT 5F
  9412.     INTERRUP.F    INT 60 through INT FF
  9413.     INTERRUP.PRI    a brief introduction to interrupts
  9414.     INTPRINT.COM    a simple formatter that also generates a list summary
  9415.     INTPRINT.DOC    instructions for INTPRINT
  9416.     INTPRINT.C    source code for INTPRINT
  9417.     MEMORY.LST    format of the BIOS data area
  9418. The following files should be distributed in an archive called INTER28C:
  9419.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  9420.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  9421.     INT2QH.*    program to convert list into QuickHelp database
  9422.     INTHELP.*    convert list into TurboPower GUIDE database
  9423. This compilation is Copyright (c) 1989, 1990, 1991, 1992 Ralf Brown
  9424. ---------------------------------------------
  9425. ARPA: ralf@cs.cmu.edu
  9426. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  9427. BIT:  ralf%cs.cmu.edu@cmuccvma
  9428. FIDO: Ralf Brown 1:129/26.1
  9429.     or post a message to me in the DR_DEBUG echo
  9430. CIS:  >INTERNET:ralf@cs.cmu.edu
  9431.